重複の可能性:
N 日より古いファイルを削除するバッチ ファイル
2 週間以上前のディレクトリからすべてのファイルを削除するスケジュールされた Windows タスクを実行したいと考えています。
その理由は、IIS と Tomcat のログがサーバーをいっぱいにするためですが、問題を調査する必要がある場合に備えて、最新のログを保持したいと考えています。
これを行う簡単な方法を知っている人はいますか?
乾杯
にげ
重複の可能性:
N 日より古いファイルを削除するバッチ ファイル
2 週間以上前のディレクトリからすべてのファイルを削除するスケジュールされた Windows タスクを実行したいと考えています。
その理由は、IIS と Tomcat のログがサーバーをいっぱいにするためですが、問題を調査する必要がある場合に備えて、最新のログを保持したいと考えています。
これを行う簡単な方法を知っている人はいますか?
乾杯
にげ
正確な構文: FORFILES /p d:\new /d -30 /m * /c "cmd /c del @file"
ScriptingAnswersから改作された VBScript を使用
Dim fso, startFolder, OlderThanDate
Set fso = CreateObject("Scripting.FileSystemObject")
startFolder = "E:\temp" ' folder to start deleting (subfolders will also be cleaned)
OlderThanDate = DateAdd("d", -07, Date) ' 07 days (adjust as necessary)
DeleteOldFiles startFolder, OlderThanDate
Function DeleteOldFiles(folderName, BeforeDate)
Dim folder, file, fileCollection, folderCollection, subFolder
Set folder = fso.GetFolder(folderName)
Set fileCollection = folder.Files
For Each file In fileCollection
If file.DateLastModified < BeforeDate Then
' fso.DeleteFile(file.Path) # Modify this to delete after testing
WScript.StdOut.WriteLine (file.Path)
End If
Next
Set folderCollection = folder.SubFolders
For Each subFolder In folderCollection
DeleteOldFiles subFolder.Path, BeforeDate
Next
End Function
このスクリプトは CScript で実行できます
@Jason: 素晴らしいユーティリティ、リソース キットの FORFILES
これを処理するバッチ ファイルをスケジュールします。
次の行は、c:\mydirectory 内の 14 日より古いすべてのファイル (*.*) を削除します。
FORFILES -pc:\mydirectory -s -m*.* -d-14 -c"DEL @FILE"
それをテキスト ファイルに入れて、「deletefiles.bat」などの名前に変更し、スケジュールします。
私はこれをテストしていませんが、試すのは簡単なはずです。
編集:これを使用する場合は、何が起こっているのかを理解していることを確認してください - -s フラグは、サブディレクトリを再帰するように指示します。また、DEL コマンドにもいくつかのフラグを指定する必要がある場合があります。:)
編集: FORFILES を機能させるには、Microsoft からダウンロードする必要があることに気付きました。特別なものを用意する必要がないので、受け入れられた解決策も気に入っています。唯一の問題は、14 日以上前のものをすべて削除するプロセスを毎日実行するのではなく、2 週間ごとにしか発生しないことです。それが価値があるもののために。:P
最も簡単な方法は、.bat 実行ファイルを毎週または毎月実行することです。
cd \mylog\dir
mkdir archive
del /Q .\archive\*.log
move *.log .\archive
より複雑なものが必要な場合は、cygwin ツールをダウンロードして un*x のようなコマンドを使用するか、場合によっては Powershell を調べてください。
バッチ ファイルまたは PowerShell スクリプトを作成してスケジュールしてみませんか?
指定した日付より古いファイルを削除するためのスクリプト。
サーバーに perl (または同様のもの) がインストールされている場合は、かなり簡単です。
#!perl
foreach my $file (</path/to/logs/*.log>) {
next unless -M $file > 14;
print "Deleting $file...\n";
# unlink $file or die "Failed to remove $file: $!";
}
家に子供がいる可能性があるため、実際に削除を行う行はコメントアウトされています:)