Loops in the Batch files with examples

This article is from our Febooti archive, it was relevant then, and I think that it is still relevant today (a few details changed). Previous article: Replaceable parameters in batch file.

WinXP-dir-p

The very simple loop in the batch script can be created by using GOTO command and a label. The syntax is – GOTO followed by the name of the line/label. The label is defined by the colon character at the beginning of the line. The label can be above or below GOTO statement. The code fragment below shows example of infinite loop.

:: LOOP.BAT
:: A batch file example using a infinite loop.
:TOP
DIR
GOTO TOP

The first two lines are remark statements giving the details of the program including the filename and a brief description of the program. The third line marks the line (creates a label) that a GOTO command can possibly link to. The fourth line will perform a directory listing. This is just an example command to illustrate a task that can be performed using the batch loop. You might like to indent the DIR command to emphasize that it is inside a loop. The last line is the command to jump to the line with the name TOP and to continue processing. Since there is no IF statement to test some condition and possibly to jump out of this loop, the batch file will continue to run indefinitely or until you press the CTRL+C or the CTRL+Break combinations on your keyboard.

Loop.bat output under Windows 8.1, Ctrl+C pressed
Loop.bat output under Windows 8.1, Ctrl+C pressed

:: LOOP2.BAT
:: Loop reads multiple replaceable parameters
:: with a SHIFT command inside the loop.
@Echo Off
:TOP
Copy %1 E:\
Shift
Goto TOP

LOOP2.BAT is a more useful program that copies a list of files specified after batch file to the E: drive. When the LOOP2.BAT program runs out of files to copy, the program will not stop. The batch script will attempt to continue until you use CTRL+C or CTRL+Break to terminate the program. To stop the batch script automatically, you need to add IF statement, but we will not discuss it here.

The first three lines are remark statements indicating the name of the batch file and a brief description of the batch file. The fourth line turns off command echoing. Remember that the @ sign turns off the echoing of the ECHO OFF command. The fifth line is the label that the GOTO command will jump to. The sixth line copies the file defined by the first replaceable parameter to the E: (usually flash drive) drive. The seventh line utilizes the SHIFT command to replace %0 with %1, %1 with %2, and so forth. The last line, GOTO TOP, is used to jump to the line labeled TOP and continue processing. Obviously the downside to this looping structure is that it needs more control. As mentioned above, one way to add this control is through the IF statement.

Next article: IF statement in DOS batch file.

This article is from our Febooti archive, it was relevant then, and I think that it is still relevant today (a few details changed).

Update Feb 21, 2015. Added link to the next article.