コマンドについて詳しく解説します
引き続き、汎用的に使えそうなバッチのお勉強です。
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日以上前のファイルを対象にします。ここでのdはdaysを意味します。
/c は選択されたファイルに対して実行するコマンドを指定するオプションです。ダブルクォーテーションで囲んでコマンドを実行します。今回のバッチではDelコマンドで条件に合ったファイルを削除しています。
/s は指定されたフォルダのサブディレクトリも対象に含めます。特に他のオプション用のパラメータは必要ありません。
/m は検索マスクのオプションです。特定のファイル名や拡張子のみを選択する場合にここで指定します。
forfilesコマンドの詳細なリファレンスは、こちらをご覧ください。
このバッチをタスクで定期的に実行
このバッチをタスクスケジューラを使って定期的に実行するようにしましょう。タスクスケジューラはWindows 7の場合、プログラム → アクセサリ → システムツールにあります。
タスクのトリガーは、定期的なスケジュールが適しています。例えば、月曜日のお昼12時などに定期的にバッチを実行するよう設定すると良いでしょう。もちろん、PCが起動している時間帯に設定しておく必要があります。
タスクの操作部分で、先ほど作成したバッチファイルを指定しておきます。
タスクスケジューラの画面はWindowsのバージョンによって多少異なりますが、基本的な操作方法はほとんど変わりません。
まとめ
- forfilesコマンドを使用して、更新日時が古いファイルを削除するバッチを作成
- タスクスケジューラを利用して、バッチを定期的に実行する設定を行う
このようなバッチの一部に使える処理を、今後も少しずつ紹介していきたいと思います。小さなバッチを組み合わせて、より便利なバッチを作成していきましょう。以上です。