スクリプトで行う定期的なログ削除の自動化の事例

ログ削除スクリプトを作ってタスクスケジューラに登録し定期的に実行する
ログを採取したまま放っておくと、いつしかログファイルでディスクは一杯になってしまうおそれがあり、ログを定期的に削除する必要が出てきます。スクリプトで行う定期的なログ削除の自動化の事例をあげてみました。
(※スクリプトをプログラムインストールフォルダの "C:\Program Files\epost\ms\" に置いた例)
[logclean.vbs] 30日前のログを指定して削除するスクリプト例

Set objFS=createobject("Scripting.FileSystemObject")
Dim MyDate, MyStr, MyFn

REM 30日前日付を算出(※1)
MyDate = Date()-30

REM 30日前のログファイル名を作成
MyStr = Mid(MyDate,3,2) + Mid(MyDate,6,2) + Mid(MyDate,9,2) + ".log"
rem MsgBox MyStr

REM 削除するファイル acceptlog をフルパスで指定(※2)
MyFn = "C:\mail\acceptlog\[マシン名]\" + MyStr
rem MsgBox MyStr + "を削除します。"

REM ファイル削除実行
objFS.DeleteFile(MyFn)

(※1)何日前を指定するのかはログファイルを削除するポリシーによって判断してください。
(※2)下線部のログファイルが置かれているパス指定は設定によって変わります。

[logclean2.vbs] 30日以前のログを一括して削除するスクリプト例

Dim MyDate, MyStr
Set fso = CreateObject("Scripting.FileSystemObject")
'30日前日付を算出
MyDate = Date() - 30
'30日前のログファイル名を作成
MyStr = Mid(MyDate, 3, 2) + Mid(MyDate, 6, 2) + Mid(MyDate, 9, 2) + ".log"

'SMTP受信ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\inlog\[マシン名]\")
'SMTP送信ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\outlog\[マシン名]\")
'SMTPローカル送信ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\outlocallog\[マシン名]\")
'接続マシンログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\acceptlog\[マシン名]\")
'SMTP受信詳細ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\receivelog\[マシン名]\")
'配送詳細ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\senderlog\[マシン名]\")
'配送失敗ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\faillog\[マシン名]\")
'POP3基本ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\pop3log\[マシン名]\")
'IMAP4基本ログ 削除(※3)
Call DeleteLog(MyStr, "C:\mail\imap4log\[マシン名]\")

'ウイルス検出ログ 削除(Enterprise II用)(※3)
'Call DeleteLog(MyStr, "C:\mail\3rd-party\[マシン名]\")
'パターンファイル更新ログ 削除(Enterprise II用)(※3)
'Call DeleteLog(MyStr, "C:\Program Files\EPOST\MS\log\"")

'------- サブルーチン -------------------------------
Sub DeleteLog(LogFileName, FolderPath)
 Dim kijyunFileName
 kijyunFileName = FolderPath + "\" + LogFileName
 Set src = fso.GetFolder(FolderPath) ' 対象フォルダの指定
 For Each FileName In src.Files
  'MsgBox FileName + " " + kijyunFileName
  If FileName <= kijyunFileName Then
   fso.DeleteFile(FileName)
  End If
 Next
End Sub


(※3)どのログを取得する設定をしているかそうでないかによって、削除対象のログファイルをコメントアウトを取るか付けるか適切に調節してください。

スケジュールでスクリプト実行が可能なように、さらにバッチファイル(logclean.bat)を作成してください。
[logclean.bat]
C:\Windows\system32\cscript.exe "C:\Program Files\epost\ms\logclean.vbs"

スクリプトとバッチファイルが完成したら、タスクスケジューラに作成したバッチファイル(logclean.bat)が毎日指定した時刻に実施されるよう登録してください。
タスクスケジューラに指定した時刻まで待ち、時間後に対象のログが削除されていることを確認します。