ログファイルを削除するためのスクリプト(VBS)
ログファイルを定期的に削除したい。
専用アプリを作成してまで削除するのもどうかと思ったのでスクリプト(VBScript)で実行することにした。
ログファイルの削除は、ファイル名に日付が入っているので、ファイル名の日付で削除する。
実行は、タスクスケジューラを使用する。
VBSのまま、タスクスケジューラに登録しても実行されないので、batファイルからVBSを実行するようにする。
DELETE_TASK.bat
CScript C:\HOGE_HOGE\TASK\DELETE_FILE.vbs
DELETE_FILE.vbs
Dim targetPath '削除対象のフォルダ targetPath = "C:\HOGE_HOGE\LOG\" '3年前のファイルを削除する Call DeleteFile(targetPath, 3) WScript.Quit 'ログ用フォルダにhoge_yyyymmdd.logのファイルがある Sub DeleteFile(folderPath, deleteYear) Dim fso Dim files Dim file Dim deleteDate Dim temp Set fso = CreateObject("Scripting.FileSystemObject") Set files = fso.GetFolder(folderPath).Files 'n年前のファイルを削除する deleteDate = DateAdd("yyyy", -deleteYear, Date) 'フォルダ内のファイルを列挙 For Each file In files '拡張子がlogファイルのみを削除対象とする If Right(file.Name, 4) = ".log" Then '"hoge_yyyymmdd.log"を"yyyy-mm-dd"の書式に変換 temp = Mid(file.Name, 6, 8) temp = Left(temp, 4) & "-" & Mid(temp, 5, 2) & "-" & Right(temp, 2) If IsDate(temp) = True Then If CDate(temp) < deleteDate Then file.Delete(True) End If End If End If Next Set file = Nothing Set files = Nothing Set fso = Nothing End Sub '日付(yyyymm)フォルダが作成され、そのフォルダ内にログファイルがある '日付フォルダごと削除する Sub DeleteFile2(folderPath, deleteYear) Dim fso Dim folders Dim folder Dim deleteDate Dim temp Set fso = CreateObject("Scripting.FileSystemObject") Set folders = fso.GetFolder(folderPath).SubFolders 'n年前のファイルを削除する deleteDate = DateAdd("yyyy", -deleteYear, Date) 'フォルダ内のフォルダを列挙 For Each folder In folders '"yyyymm"を"yyyy-mm-dd"の書式に変換 temp = Left(folder.Name, 4) & "-" & Right(folder.Name, 2) & "-01" If IsDate(temp) = True Then If CDate(temp) < deleteDate Then folder.Delete(True) End If End If Next Set folder = Nothing Set folders = Nothing Set fso = Nothing End Sub