ForFiles is useful for a couple of reasons:
1. It replaces the FOR command in the command shell, which is extremely powerful and useful, but a bit of a pain.
2. It allows you to use relative time (in days) to select the files that you want to act upon
Because links often break, I've included the content here. This is a microsoft TechNet article.
Link to article:
Forfiles
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.
| ||||||||||||||||||||||
• | 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:
| ||||||||||||||||||||||
• | 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 |
No comments:
Post a Comment