Windowsでファイルを指定日時のタイムスタンプに変更

過去分の一定期間のログファイルを残し、それ以前のログファイルはタスク実行で日々削除する。

そのような場面は少なからずありますが、ログローテートはしてくれるのに削除はしてくれないアプリも少なくありません。

IISのSMTPサーバでログ収集を有効にした場合のログも、削除されないログの一つです。

90日以前のログを削除する場合は、コマンドプロンプトで下記を実行すれば削除できます。

forfiles /P "C:\Windows\System32\LogFiles\SMTPSVC1" /D -90 /M "*.log" /c "cmd /c del @file"

ここから本題ですが、削除を行うにしても古いタイムスタンプのファイルがないと動作確認ができません。

そこで。

動作の確認のため日付のファイルに加えてタイムスタンプも変更したファイルを作成する場合、PowerShellで下記を実行すれば指定の日付のタイムスタンプで作成できます。

$logdays = (Get-Date).AddDays(-90).ToString('yyMMdd')
$logdays2 = (Get-Date).AddDays(-90).ToString('yyyy/MM/dd')
echo test > C:\Windows\System32\LogFiles\SMTPSVC1\"ex"$logdays".log"
Set-ItemProperty -Path C:\Windows\System32\LogFiles\SMTPSVC1\"ex"$logdays".log" -Name LastWriteTime -Value $logdays2

この場合は90日前のファイルが作成されます。

動作確認は面倒ですが、必ずやっておきましょう。

コメントは受け付けていません。