Forfiles
Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
Selects files in a folder or tree for batch processing.
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM**/DD/**YYYY | DD}]]
- /p Path
Specifies the Path on which you want to start searching. The default folder is the current working directory, which you specify by typing a period (.).
- /m SearchMask
Searches files according to SearchMask. The default SearchMask is *.*.
- /s
Instructs forfiles to search in subdirectories.
- /c Command
Runs the specified Command on each file. You must wrap command strings with spaces in quotation marks. The default Command is "cmd /c echo @file".
- /d[{+** | -}] [{MM/DD/YYYY | DD}]**
Selects files with a date greater than or equal to (+) or less than or equal to (-) the specified date, where MM**/DD/**YYYY is the specified date and DD is the current date minus DD days. If you do not specify + or -, + is used. The valid range for DD is 0 - 32768.
- /?
Displays help at the command prompt.
Forfiles is most commonly used in batch files.
Forfiles /s is similar to dir /s.
The following table list the variables that you can use in the /cCommand command string.
Variable Description @file
File name
@fname
File name without extension
@ext
File 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 it 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 extension. Or, you could execute every batch file (*.bat) on the C:\ drive with the file name "Myinput.txt" as the first argument.
With forfiles, you can do any of the following:
Select files by an absolute or a relative date using /d.
Build an archive tree of files using variables such as @fsize (file size) and @fdate (file date).
Differentiate files from directories using the @isdir variable.
Format output by including special characters in the command line and surrounding the characters with the hexadecimal code 0xHH.
Forfiles works by implementing the recurse subdirectories flag on tools designed to process only a single file.
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 older than 100 days on drive C:, type:
forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file : date >= 100 days"
To list all of the files older than January 1, 1993 on drive C:, and then display "file is quite old!" for files with a date older than 01/01/1993, type:
forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"
To list all of the extensions of all of files on drive C: in column format, type:
forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:
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 older than 100 days on drive C:, type:
forfiles /p c:\ /s /m *.* /d t-100 /c "cmd /c echo @file : date >= 100 days"
To list all of the files older than January 1, 1993 on drive C:, and then display "file is quite old!" for files with a date older than 01/01/1993, type:
forfiles /p c:\ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"
To list all of the extensions of all of files on drive C: in column format, type:
forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"
Format | Meaning |
---|---|
Italic |
Information that the user must supply |
Bold |
Elements that the user must type exactly as shown |
Ellipsis (...) |
Parameter that can be repeated several times in a command line |
Between brackets ([]) |
Optional items |
Between braces ({}); choices separated by pipe (|). Example: {even|odd} |
Set of choices from which the user must choose only one |
|
Code or program output |