【Windowsバッチ】定期的にファイルを削除するバッチ作成

自分が使っているパソコンを見てみると、ファイルが大量にあり、これを定期的に消せないのかなと思い、バッチを作ってみました。

手順
1.forfilesコマンドで対象のファイルを削除する
2.今回の処理内容について1.2.1 ①削除対象のファイルをログに記録する
3.ファイルを削除する

■forfilesコマンドで対象のファイルを削除する

forfileというコマンドでできるようなので、以下のバッチを作成しました。
①削除するファイルをログとして記録する
②ファイルを削除する

# rem —削除対象ファイルのログに記録する—
forfiles /P C:\Users\Downloads /D -10 /C “cmd /c echo %date% @file @fdate” >> C:\TEM\del.log
# rem –ファイルを削除する–
forfiles /P C:\Users\Downloads /D -10 /C “cmd /c del /F /Q @file”

※参考:ファイルを消すのが面倒でフォルダごと消す場合
# rem –フォルダを削除する–
forfiles /P C:\Users\Downloads /D -10 /C “cmd /c rmdir /Q @file”

forfilesの詳細(MSサイト)
https://technet.microsoft.com/ja-jp/library/cc753551(v=ws.10).aspx

①削除対象のファイルをログに記録

/Pオプションで作業対象のパスを指定し、/Dで最終更新日が本日から10日前を選択して削除対象が決まります。

その後、上記で抽出したファイルに対して/Cで実行するコマンドを記載。
””で囲んでいる部分を実行してその結果をテキストに吐き出す。
テキストに書く内容は@date(本日の日付),@file(ファイル名),@fdate(ファイルの最終更新日付)にしました。

②ファイルを削除する

①の処理がベースになって、10日前のものを対象にして、DELコマンドを実行。
DELコマンドのオプションで/F(読み取り専用のファイルも強制削除)、/Q(確認メッセージを出さない)を行っています。

③フォルダを削除する

②をやればすべてきれいになると思ったらフォルダが残ってしまったので、②と同じような条件でrmdirコマンドでフォルダを削除

後はこれをタスクスケジューラに登録して定期的に実行。
もしくはスタートアップに登録してログイン時に削除など..。

コメント

タイトルとURLをコピーしました