引き続き、汎用的に使えそうなバッチのお勉強です。 Windowsのダウンロードフォルダってあるじゃないですか。 IEやChromeでファイルをダウンロードすると自動的にファイルを保存するためのフォルダなんですが、ここに保存されたファイル、定期的に整理しないとどんどんファイルが溜まっていってしまうんですよね。 みなさんも、そんな経験があるんじゃないかなと思います。
このフォルダを自動的に整理できたらいいのに…。 そんなバッチをちょうど海外サイトHow to Geekで紹介していたので、僕も試してみました。 バッチ勉強も兼ねて。
How to Geek
How to Automatically Delete Files in Your Download Folder on a Schedule
こちら、今回のアイデアの元ネタとなった記事です。
30日以上前のファイルを削除するバッチ
さて、そのバッチファイルですが、バッチというよりはほぼコマンド一行だけのものです。 REMはコメントアウトなので、気になさらず。 2行目が今回のキモになる部分です。
REM Remove files older than 30 days forfiles /p "C:\Users\YOURUSERNAME\Downloads" /s /m *.* /c "cmd /c Del @path" /d -30
処理の内容:forfilesコマンドで指定したファイルを選択して削除
一応中身の処理を確認しておきましょう。
forfiles /p "C:\Users\YOURUSERNAME\Downloads" /s /m *.* /c "cmd /c Del @path" /d -30
forfiles コマンドは、条件に合うファイルを出力して、特定のコマンドを実行させる処理を実行できます。
/p はフォルダのパスを指定するオプション。 ダブルクォーテーションでくくったファイルパスの中のファイルで条件を満たすものを出力します。
/d は最終更新日を指定するオプションです。 "/d -30" と指定した場合は最終更新日が30日以上前のファイルを条件に出力します。 daysのdでしょうね。
/c は出力したファイルに実行するコマンドを指定するオプション。 これもダブルクォーテーションでくくって、コマンドを実行できます。 今回のバッチではDelコマンドで条件にあったファイルを削除するコマンドを実行してます。
/s は指定されたフォルダのサブディレクトリも出力対象にします。 特にオプション用のパラメータはなさそう。
/m は検索マスクのオプション。 特定のファイル名や拡張子のみを選択したい場合はここで指定可能ですね。
forfilesコマンドのリファレンスは、こちらをどうぞ。
このバッチをタスクで定期的に実行
このバッチをタスクスケジューラを使って定期的に実行するようにしましょう。 タスクスケジューラはWindows7だとプログラム→アクセサリ→システムツールにあります。
タスクのトリガーは、定期的なスケジュールでいいでしょう。 例えば月曜日のお昼12時などに定期的にバッチを実行するようにするのが良いでしょう。 もちろん、PCが起動している時間帯にセットしておかないといけないですね。
実行する操作の部分で、先ほど作成したバッチファイルを指定しておきます。
タスクスケジューラ画面はWindowsのバージョンによって画面が多少違いますが、基本的な操作方法はあまり変わらないですよ。
まとめ
- forfilesコマンドで更新日時の古いファイルを削除するバッチを作成
- タスクスケジューラで定期的に実行する
こうしたバッチの一部分に使えそうな処理を今後もちょこちょこと紹介していきたいですね。 小さなバッチを組み合わせて、便利なバッチを作っていきましょう。 ということで、以上です。