Windowsバッチで古いファイルを削除する方法

更新:2018.5.6

目次

概要

windowsのバッチファイルで「10日以上経過したファイルを削除したい」を実現する方法を紹介します。

古いログファイルやバックアップデータの削除に役立つのではないでしょうか。

更新日がn日以上

forfiles /p c:\path\to\file /d -3 /m "*.txt" /c "cmd /c del @file"

/p c:\path\to\fileはforfilesでサーチする対象ディレクトリを表しています。

/d -7は7日前を表しています。

/m "*.txt"は検索パターンを表していて、拡張子が.txtのファイルが対象になります。

/c "cmd /c del @file"はマッチしたファイルに対して実行するコマンドを表しています。この場合は、一致したファイルを削除するコマンドになっています。

動作確認

動作確認する方法を紹介します。

やることは下記のようになります。

テスト用に空ファイルを作る

まずは、7日分のファイルを作成します。

コマンドプロンプトを起動して下記のコマンドを実行すると、7つの空ファイルが作成されます。

copy nul 1.txt
copy nul 2.txt
copy nul 3.txt
copy nul 4.txt
copy nul 5.txt
copy nul 6.txt
copy nul 7.txt

ファイル名は何でもOKです。

テスト用ファイルのタイムスタンプを変更

次にファイルのタイムスタンプを7日分に合わせて変更します。

windowsではパワーシェルを使う必要があります。

パワーシェルは「ファイル名を指定して実行」を起動して、powershellと入力してエンターで起動することができます。

「ファイル名を指定して実行」は[win]+[r]のショートカットキーで起動するのが簡単です。

2018/01/1の部分をテストしたい日付に合わせて変更してください。

Set-ItemProperty "1.txt" -Name LastWriteTime -Value "2018/01/1 00:00:00"
Set-ItemProperty "2.txt" -Name LastWriteTime -Value "2018/01/2 00:00:00"
Set-ItemProperty "3.txt" -Name LastWriteTime -Value "2018/01/3 00:00:00"
Set-ItemProperty "4.txt" -Name LastWriteTime -Value "2018/01/4 00:00:00"
Set-ItemProperty "5.txt" -Name LastWriteTime -Value "2018/01/5 00:00:00"
Set-ItemProperty "6.txt" -Name LastWriteTime -Value "2018/01/6 00:00:00"
Set-ItemProperty "7.txt" -Name LastWriteTime -Value "2018/01/7 00:00:00"

テストしてみる

実際に確認するために削除用のコマンドを実行します。

forfiles /p c:\path\to\file /d -3 /m "*.txt" /c "cmd /c del @file"

c:\path\to\fileの部分と/d -3の部分を想定している値に変更して実行してみてください。

想定した日数以上古いファイルが削除されていれば成功です。

Windows関連記事











これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]