Forfiles

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.

  • 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

Courier font

Code or program output

See Also

Concepts

Command-line reference A-Z
Command shell overview
Dir