Selects and executes a command on a file or set of files. This command is useful for batch processing.
For examples of how to use this command, see Examples.
Syntax
forfiles [/p <Path>] [/m <SearchMask>] [/s] [/c "<Command>"] [/d [{+|-}][{<Date>|<Days>}]]
Parameters
Parameter | Description |
---|---|
/p <Path> |
Specifies the path from which to start the search. By default, searching starts in the current working directory. |
/m <SearchMask> |
Searches files according to the specified search mask. The default search mask is *.*. |
/s |
Instructs the forfiles command to search into subdirectories recursively. |
/c "<Command>" |
Runs the specified command on each file. Command strings should be enclosed in quotation marks. The default command is "cmd /c echo @file". |
/d [{+|-}][{<Date>|<Days>}] |
Selects files with a last modified date within the specified time frame.
|
/? |
Displays help at the command prompt. |
Remarks
- Forfiles is most commonly used in batch files.
- Forfiles /s is similar to dir /s.
- You can use the following variables in the command string as
specified by the /c command-line option.
Variable Description @FILE
File name.
@FNAME
File name without extension.
@EXT
File name extension.
@PATH
Full path of the file.
@RELPATH
Relative path of the file.
@ISDIR
Evaluates to TRUE if a file type is a directory. Otherwise, this variable evaluates to FALSE.
@FSIZE
File size, in bytes.
@FDATE
Last modified date stamp on the file.
@FTIME
Last modified time stamp on the file.
- With forfiles, you can run a command on or pass
arguments to multiple files. For example, you could run the
type command on all files in a tree with the .txt file name
extension. Or you could execute every batch file (*.bat) on drive
C, with the file name "Myinput.txt" as the first argument.
- With forfiles, you can do any of the following:
- Select files by an absolute date or a relative date by using
the /d parameter.
- Build an archive tree of files by using variables such as
@FSIZE and @FDATE.
- Differentiate files from directories by using the @ISDIR
variable.
- Include special characters in the command line by using the
hexadecimal code for the character, in 0xHH format (for
example, 0x09 for a tab).
- Select files by an absolute date or a relative date by using
the /d parameter.
- Forfiles works by implementing the recurse
subdirectories flag on tools that are designed to process only
a single file.
Examples
To list all of the batch files on drive C, type:
forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file is a batch file"
To list all of the directories on drive C, type:
forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"
To list all of the files in the current directory that are at least one year old, type:
forfiles /s /m *.* /d -365 /c "cmd /c echo @file is at least one year old."
To display the text "File is outdated" for each of the files in the current directory that are older than January 1, 2007, type:
forfiles /s /m *.* /d -01/01/2007 /c "cmd /c echo @file is outdated."
To list the file name extensions of all the files in the current directory in column format, and add a tab before the extension, type:
forfiles /s /m *.* /c "cmd /c echo The extension of @file is 0x09@ext"