2010年10月4日月曜日

WSH でX日前のファイルを削除する

Windows のアプリケーションで作成されるログファイルの内、X 日前に更新されたものだけを削除したい。
WSH で作成してみました。


script_name = WScript.ScriptFullName

Set shell = CreateObject("WScript.Shell")

delete_files "D:\Logdir", ".log$", 40

' ファイルを削除する関数
Sub delete_files(dirname, re_pattern, delete_days)
Dim fs, dir, re, num_delete

Set fs = CreateObject("Scripting.FileSystemObject")
Set dir = fs.GetFolder(dirname)
Set re = New RegExp
re.Pattern = re_pattern
num_delete = 0
For each file in dir.Files
If re.Test(file.Name) Then
diff_days = DateDiff("d", file.DateLastModified, Date)
If diff_days > delete_days Then
fs.DeleteFile file.Path, True
num_delete = num_delete + 1
End If
End If
Next
Set re = Nothing
Set dir = Nothing
Set fs = Nothing
shell.LogEvent 0, script_name & ": """ & dirname & """ 以下のファイルを " & num_delete & " 削除しました。"
End Sub


参考

0 件のコメント: