FOR /R

Loop through files (Recurse subfolders)

Syntax
      FOR /R [[drive:]path] %%parameter IN (set) DO command

Key
   drive:path  : The folder tree where the files are located.

   set         : A set of one or more files. Wildcards must be used.
                 If (set) is a period character (.) then FOR will
                 loop through every folder.

   command     : The command(s) to carry out, including any
                 command-line parameters.

   %%parameter : A replaceable parameter:
                 in a batch file use %%G (on the command line %G)

This command walks down the folder tree starting at [drive:]path, and executes the DO statement against each matching file.

If the [drive:]path are not specified they will default to the current drive:path.

Unlike some other variants of the FOR command you must include a wildcard (either * or ?) in the 'set' to get consistent results returned. In many cases you can work around this by adding a single character wildcard e.g. if you are looping through multiple folders to find the exact filename myfile.txt you could instead specify myfile.t?t

Examples:

Delete every .bak file in every subfolder starting at C:\temp
For /R C:\temp\ %%G IN (*.bak) do Echo del "%%G"

A batch file to rename all .LOG files to .TXT in the 'demo' folder and all sub-folders:
CD C:\demo\
For /R %%G in (*.LOG) do Echo REN "%%G" "%~nG.TXT"

Remove the echo from these commands to run them for real

Change directory to each subfolder under C:\Work in turn:

FOR /R "C:\Work\" %%G in (.) DO (
 Pushd %%G
 Echo now in %%G
 Popd )
Echo "back home"

FOR is an internal command.

“Just think how happy you would be if you lost everything you have right now, and then got it back again” - Frances Rodman

Related:

FOR - Loop commands
FOR - Loop through a set of files in one folder
FOR /D
- Loop through several folders
FOR /L - Loop through a range of numbers
FOR /F - Loop through items in a text file
FOR /F - Loop through the output of a command
FORFILES - Batch process multiple files
IF - Conditionally perform a command
Powershell: ForEach-Object - Loop for each object in the pipeline
Equivalent bash command (Linux): for - Expand words, and execute commands


© Copyright SS64.com 1999-2014
Some rights reserved