ファイルまたは一連のファイルに対してコマンドを選択して実行します。 このコマンドは、バッチ ファイルで最も一般的に使用されます。
Syntax
forfiles [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] [{<date> | <days>}]]
Parameters
| Parameter | Description |
|---|---|
/P <pathname> |
検索を開始するパスを指定します。 既定では、現在の作業ディレクトリで検索が開始されます。 |
/M <searchmask> |
指定した検索マスクに従ってファイルを検索します。 既定の検索マスクは *です。 |
| /S | forfiles コマンドに、サブディレクトリを再帰的に検索するように指示します。 |
/C <command> |
指定したコマンドを各ファイルで実行します。 コマンド文字列は二重引用符で囲む必要があります。 既定のコマンドは "cmd /c echo @file"です。 |
/D [{+\|-}][{<date> | <days>}] |
指定した期間内に最終変更日のファイルを選択します。
|
| /? | コマンド ウィンドウにヘルプ テキストを表示します。 |
Remarks
forfiles /Sコマンドは、dir /Sに似ています。コマンド ライン オプションで指定されているコマンド文字列には、 次の 変数を使用できます。
Variable Description @FILE File name. @FNAME 拡張子のないファイル名。 @EXT ファイル名拡張子。 @PATH ファイルの完全なパス。 @RELPATH ファイルの相対パス。 @ISDIR ファイルの種類がディレクトリの場合は TRUE に評価されます。 それ以外の場合、この変数は FALSE に評価されます。 @FSIZE ファイル サイズ (バイト単位)。 @FDATE ファイルの最終変更日スタンプ。 @FTIME ファイルの最終変更時刻スタンプ。 forfiles コマンドを使用すると、複数のファイルに対してコマンドを実行したり、複数のファイルに引数を渡したりできます。 たとえば、ファイル名拡張子が .txt のツリー内のすべてのファイルに対して type コマンドを実行できます。 または、最初の引数としてファイル名 Myinput.txt を使用して、ドライブ C 上のすべてのバッチ ファイル (*.bat) を実行することもできます。
このコマンドでは、次のことができます。
/d パラメーターを使用して、絶対日付または相対日付でファイルを選択します。
@FSIZE や @FDATEなどの変数を使用して、ファイルのアーカイブ ツリーを構築します。
@ISDIR 変数を使用して、ファイルとディレクトリを区別します。
文字の 16 進数コード (0xHH 形式) を使用して、コマンド ラインに特殊文字を含めます (たとえば、タブの場合は 0x09)。
このコマンドは、1 つのファイルのみを処理するように設計されたツールに
recurse subdirectoriesフラグを実装することによって機能します。
Examples
ドライブ C 上のすべてのバッチ ファイルを一覧表示するには、次のように入力します。
forfiles /P c:\ /S /M *.bat /C "cmd /c echo @file is a batch file"
ドライブ C 上のすべてのディレクトリを一覧表示するには、次のように入力します。
forfiles /P c:\ /S /M * /C "cmd /c if @isdir==TRUE echo @file is a directory"
1 年以上前の現在のディレクトリ内のすべてのファイルを一覧表示するには、次のように入力します。
forfiles /S /M *.* /D -365 /C "cmd /c echo @file is at least one year old."
2007 年 1 月 1 日より古い現在のディレクトリ内の各ファイルのテキスト ファイル が古いと表示するには、次のように入力します。
forfiles /S /M *.* /D -01/01/2007 /C "cmd /c echo @file is outdated."
現在のディレクトリ内のすべてのファイルのファイル名拡張子を列形式で一覧表示し、拡張子の前にタブを追加するには、次のように入力します。
forfiles /S /M *.* /C "cmd /c echo The extension of @file is 0x09@ext"