Windowsコマンド虎の巻

forfiles

forfilesは、条件に合致するファイルに対して処理を行うコマンドです。

解説

forfilesは単独のコマンドとしてはあまり使用せず、主にバッチプログラムの中で使用します。

構文

(構文)
FORFILES [/P パス名] [/M 検索マスク]  [/S] [/C コマンド] [/D [+ | -] {yyyy/MM/dd | dd}]
【オプション】
オプション説明
/P パス名対象のフォルダを指定する
(未指定時はカレントフォルダ)
/M 検索マスクファイル名のパターンを指定する
/Sサブディレクトリも処理対象に指定する
/C "コマンド"各ファイルに対して実行するコマンドを指定する
 @file:ファイル名(例:test.txt)
 @fname:拡張子なしのファイル名(例:test)
 @ext:ファイルの拡張子のみ(例:txt、exeなど)
 @path:ファイルのフルパス(例:C:\temp\test.txt)
 @relpath:ファイルの相対パス(例:.\test.txt)
 @isdir:ファイルの種類
   (ディレクトリの場合は"TRUE"、ファイルの場合は"FALSE")
 @fsize:ファイルサイズ(バイト単位)
 @fdate:ファイルの最終更新日
 @ftime:ファイルの最終更新時刻
/D 日付最終更新日に対する条件を現在日付からの日数もしくは日付(yyyy/MM/dd形式)で指定する
※日数の範囲は0~32768。
(例)
 30日前:-30
 2020/01/31以前:-2020/01/31
 2020/01/01以降:+2020/01/01
/?コマンドのヘルプを表示する

サンプル

カレントディレクトリのフォルダとファイルの一覧を表示する

forfiles

カレントディレクトリのフォルダとファイルの一覧を更新日、更新時刻と共に表示する

forfiles /c "cmd /c echo @path @fdate @ftime"

D:\testフォルダ内にあるフォルダとファイルをサブフォルダ内も含め全て表示する

forfiles /P d:¥test /S /c "cmd /c echo @path"

D:\testフォルダ内で更新日付が 30日以前のファイルをサブフォルダ内も含め全て表示する

forfiles /P d:¥test /S /D -30 /c "cmd /c echo @path"

D:\testフォルダ内で更新日付が 2020/01/01以降のファイルをサブフォルダ内も含め全て表示する

forfiles /P d:¥test /S /D +2020/01/01 /c "cmd /c echo @path"

D:\testフォルダ内にある更新日が 90日以前で拡張子が「.log」ファイルを全て削除する

forfiles /P d:¥test /D -90 /M "*.log" /c "cmd /c del @file"

コマンドのヘルプを表示する

forfiles /?

備考

  • コマンドプロンプトから「forfiles /?」を実行すると、forfilesコマンドのヘルプを確認できます。

関連項目

  • for:ループ処理を行う