[記事公開日]2025/10/06
⚙️ forfilesコマンドの使い方|条件付きでファイルを処理する便利コマンド
もくじ
はじめに
Windowsのコマンドプロンプトには、条件を指定して複数のファイルに一括処理を行える便利なコマンド「forfiles」が存在します。特に、古いログファイルの削除や一定期間経過したバックアップの整理など、定期的なメンテナンス作業に重宝されます。
この記事では、forfilesコマンドの基本構文から実践的な活用例、オプション、注意点までを詳しく解説します。
🛠 forfilesコマンドとは?
-
役割:指定条件に一致するファイルに対して処理を実行する
-
用途:古いファイルの削除、バックアップ整理、条件付きファイル操作
-
特徴:日付や拡張子を条件にした自動処理が可能
📌 基本構文
forfiles [/p パス] [/m 検索パターン] [/s] [/d [+|-]日数] [/c コマンド]
主なパラメータ
-
/p パス: 対象とするディレクトリを指定(省略時は現在のディレクトリ) -
/m 検索パターン: ファイル名やワイルドカードを指定(例: *.txt) -
/s: サブディレクトリを含めて検索 -
/d 日付条件: 更新日を基準に検索(例:-30は30日前以前、+7は7日以降) -
/c コマンド: 条件に一致したファイルに対して実行するコマンド
📊 基本的な使い方
30日以上前のログファイルを削除
forfiles /p C:\Logs /s /m *.log /d -30 /c "cmd /c del @file"
-
C:\Logs 以下で30日以上前に更新された .log ファイルを削除
古いバックアップファイルを移動
forfiles /p D:\Backup /m *.bak /d -60 /c "cmd /c move @file D:\OldBackup"
-
60日以上前の .bak ファイルを OldBackup フォルダへ移動
更新が新しいファイルを表示
forfiles /m *.txt /d +7 /c "cmd /c echo @file"
-
7日以内に更新された .txt ファイル名を出力
🔍 出力例
"C:\Logs\error1.log"
"C:\Logs\error2.log"
"C:\Logs\old\archive.log"
-
条件に一致したファイルが一覧で表示される
📚 応用的な活用方法
ファイルサイズ別に確認
forfiles /m *.txt /c "cmd /c echo @file @fsize bytes"
-
ファイル名とサイズを表示
ファイルの日付を確認
forfiles /m *.txt /c "cmd /c echo @file @fdate @ftime"
-
ファイルの更新日と時刻を出力
複数の処理を実行
forfiles /p C:\Work /m *.tmp /d -7 /c "cmd /c echo 削除:@file && del @file"
-
対象ファイルを表示してから削除を実行
バッチファイルで自動化
@echo off
forfiles /p C:\Logs /s /m *.log /d -30 /c "cmd /c del @file"
echo 古いログを削除しました。
-
定期実行タスクに登録することで自動クリーンアップ可能
⚠️ 注意点
-
削除操作(del)はゴミ箱を経由せず完全削除される
-
日付指定の「-」「+」は誤解しやすいため注意(
-30は30日以前、+30は30日以降) -
ファイル名にスペースがある場合は
@fileを必ずダブルクォーテーションで囲む -
PowerShell環境では「Get-ChildItem」や「Where-Object」などで代替可能
📊 まとめ表
| コマンド | 用途 | 主な活用シーン |
|---|---|---|
| forfiles /d -30 | 30日以上前のファイルを対象 | 古いログ削除 |
| forfiles /m *.bak /d -60 | 60日以上前のバックアップ対象 | 整理・移動 |
| forfiles /d +7 | 7日以内更新のファイルを対象 | 最近の更新確認 |
| forfiles /c “cmd /c echo @file @fsize” | サイズ確認 | ファイル管理 |
| forfiles /c “cmd /c del @file” | 削除処理 | 定期的なクリーンアップ |
関連記事
-
del / eraseコマンドで不要なファイルを削除する方法
-
moveコマンドでファイルを移動する方法
-
robocopyコマンドで高機能なバックアップを行う方法
-
schtasksコマンドで定期実行を設定する方法
さいごに
「forfiles」コマンドは、ファイルの更新日やパターンを条件に処理を自動化できる強力なツールです。特にログ整理や古いデータの削除など、定期的なメンテナンス作業に欠かせない存在です。
シンプルな構文ながら柔軟な条件指定が可能で、バッチ処理と組み合わせることでさらに効果を発揮します。ぜひ日常のファイル管理に取り入れてみてください。
