指定した日付を持つファイルを削除するバッチ
概要
今回は ファイル名に8日前の日付を持つログファイルを削除するバッチ を作成しました。 doshbatch(Windowsコマンド)では日付の計算をゴリ押さないとできないため、powershellのコマンドを呼び出し対象日付を取得しました。
ソースコード
※削除対象のログファイルは、 log_yyyyMMdd.log とする。
@echo off setlocal rem 初版 rem 削除対象日付を取得 FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddDays"("-8")".ToString"("'yyyyMMdd'")"`) DO SET targetday=%%a rem echo %targetday% rem 削除対象ファイル名を設定 set targetFile=log_%targetday%.log rem echo %targetFile% rem 削除対象のファイルのフルパスを設定 set targetFilePath=C:\work\%targetFile% rem echo %targetFilePath% rem ファイルを削除する del %targetFilePath% exit
学べたこと
powershellでの実行結果を格納するには癖があること。 こんな書き方だとコマンドそのものが変数に格納されてしまう。
※この書き方はダメです
SET targetday=powershell [DateTime]::Today.AddDays"("-8")".ToString"("'yyyyMMdd'")
なので、下記書き方をする。
FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddDays"("-8")".ToString"("'yyyyMMdd'")"`) DO SET targetday=%%a
変更履歴
- 20190908:初版