Forfiles
Updated: January 21, 2005
Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
Forfiles
Selects files in a folder or tree for batch processing.
Syntax
forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]
Parameters
- /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.
Remarks
-
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.
-
Select files by an absolute or a relative date using /d.
-
Forfiles works by implementing the recurse subdirectories flag on tools 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 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"
Formatting legend
| 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 |
