Loop through files (Recurse subfolders)

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

   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


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


FOR - Loop commands
FOR - Loop through a set of files in one folder
- 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 1999-2015
Some rights reserved