Windowsのバッチ処理を活用する際に、特定の条件に合致するファイルを検索し、一括処理を実行できる便利なコマンドが forfiles
です。ファイルの整理、古いファイルの削除、ログの管理などに役立ちます。本記事では、forfiles
コマンドの基本的な使い方から応用例まで詳しく解説します。
forfiles コマンドとは?
forfiles
は、指定した条件に合致するファイルに対して一括処理を実行できるWindowsのコマンドラインツールです。特に、日時や拡張子などの条件を指定してファイルを処理する場合に有用です。
主な用途としては、
- 指定した日付より古いファイルの削除
- 特定の拡張子を持つファイルの検索
- ファイルのリストを取得
- 条件に合致するファイルに対する一括処理
などが挙げられます。
forfiles コマンドの基本構文
forfiles
コマンドの基本的な構文は以下の通りです。
forfiles /P <検索するフォルダ> /M <検索条件> /D <日付条件> /C "コマンド"
オプション | 説明 |
---|---|
/P | 検索するフォルダを指定(デフォルトはカレントディレクトリ) |
/M | 検索するファイルのパターン(ワイルドカード使用可能) |
/D | 日付条件(-n :n日前より新しい、+n :n日前より古い) |
/C | 条件に合致するファイルに適用するコマンド |
forfiles コマンドの基本的な使い方
1. 指定フォルダ内の全ファイルを一覧表示
forfiles /P C:\temp /M *.* /C "cmd /c echo @file"
このコマンドは C:\temp
フォルダ内の全ファイルのファイル名を一覧表示します。
2. 指定した日付より古いファイルを削除
例えば、30日前より古いファイルを削除するには以下のコマンドを使用します。
forfiles /P C:\temp /M *.* /D -30 /C "cmd /c del @file"
これにより、C:\temp
内の30日より古いファイルが削除されます。
3. 特定の拡張子を持つファイルを検索
特定の拡張子(例:txt
)を持つファイルを検索するには以下のように記述します。
forfiles /P C:\temp /M *.txt /C "cmd /c echo @file"
C:\temp
フォルダ内の .txt
ファイルのリストが表示されます。
4. ファイルのサイズを表示
forfiles /P C:\temp /M *.* /C "cmd /c echo @fsize bytes - @file"
ファイル名とファイルサイズを表示することができます。
forfiles コマンドの応用例
1. 古いログファイルを自動削除するバッチスクリプト
ログファイルを一定期間保持し、それより古いものを削除するスクリプトを作成すると、ディスクの無駄な使用を防ぐことができます。
@echo off
forfiles /P C:\logs /M *.log /D -60 /C "cmd /c del @file"
このスクリプトをタスクスケジューラで定期実行すれば、60日以上前のログファイルを自動削除できます。
2. バックアップファイルの整理
拡張子が .bak
のバックアップファイルを一覧表示し、古いものを削除する場合は以下のように記述します。
forfiles /P C:\backup /M *.bak /D -90 /C "cmd /c del @file"
90日以上前の .bak
ファイルが削除されます。
3. 特定の条件に合うファイルを別フォルダに移動
例えば、7日以内に変更された .log
ファイルを C:\archive
フォルダに移動する場合は、次のコマンドを使用します。
forfiles /P C:\logs /M *.log /D +7 /C "cmd /c move @file C:\archive"
4. フォルダ内のすべてのファイルを圧縮
特定フォルダ内のすべてのファイルを .zip
に圧縮する場合、7z.exe
を利用した以下のバッチスクリプトを活用できます。
forfiles /P C:\data /M *.* /C "cmd /c 7z a C:\backup\archive.zip @file"
まとめ
forfiles
コマンドを使うことで、条件に合致するファイルの検索や一括処理を簡単に行うことができます。特に、古いファイルの整理やログ管理、バックアップ運用などに活用できるため、バッチ処理の自動化を考えている方にとっては非常に有用なコマンドです。
本記事で紹介した基本的な使い方や応用例を参考に、ぜひご自身の環境で試してみてください!