トップ回答者
ログファイル内の日付を判別し、一定の日付より古いログを削除する手順

質問
-
https://answers.microsoft.com/ja-jp/windows/forum/windows_10-other_settings/%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4/55a737e8-0783-4a28-b2bd-9e4c7500883b?tm=1607497000515
上記に投稿いたしましたが、モデレーターの方からこちらを案内して頂きました。
改めて投稿させて頂きます。
【質問事項】
バッチファイルから以下のように日付・時間のついたログが書き出されます。
~~~~~~~~~~~~~~~~~~
2020/12/07 15:52:51.18
結果は成功
2020/12/08 15:51:51.87
結果は成功
2020/12/09 15:52:51.18
結果は成功
~~~~~~~~~~~~~~~~~~
ログが増えすぎるのを防ぐために一定の日付より古い(例えば2日以前)ログを削除したいです。
バッチファイルにどのようなコマンドを入れれば実現できるでしょうか?
回答
すべての返信
-
cmdによるバッチなら、出力ファイル名に日付を含めてつけてしまえば、良いのではないか?
「echo "%date% %Time% Errror" >>log.%date:~0,4%%date:~5,2%%date:~8,2%」とかやれば、2020/12/10分のログはlog.20201210に出力されるから、別途にファイル名でソートして新しいもの3つだけ残してファイル単位で削除すればいい。
参考:Windowsのバッチファイル中で日付をファイル名に使用する (1/2):Tech TIPS - @IT (atmarkit.co.jp)
一つのファイルのままで処理しようとすると、データの読み取って処理する必要があるので処理が複雑になります。
アプリケーションによるバッチ処理で、ログファイルがアプリケーションによって開かれたままである場合には、ファイルの排他制御の関係で無理があります。
- 編集済み Takashi NISHIIE 2020年12月10日 2:56