Command @
Description Do not echo this line.
Syntax @ command line
Typical Use To hide a single line if echo is switched on, or to hide the switching off of the echo command.
Example echo This line will be echoed twice to the screen,
@echo Whereas this line will occur only once.

Command ECHO
Description The ECHO command has several different uses. MS DOS batch files use two echo 'modes'. The default echo mode is ECHO ON. When ECHO is set to ON, every command in the batch file is displayed to the screen before it is run. Sometimes this information is not required, and can even be downright annoying for larger batch files. The command ECHO OFF sets the batch echo mode to OFF. In this mode, the commands are not printed to the screen prior to their execution.
As well as the echo modes, the ECHO command is used to print a message to the user. Messages are displayed to the user by preceding a line of text with ECHO.
Syntax ECHO MODE ON : ECHO ON
ECHO MODE OFF : ECHO OFF
DISPLAY A MESSAGE : ECHO message
Typical Use The command @ECHO OFF is almost always placed at the top of a batch file to switch off subsequent command echo.
ECHO is also the only way a batch file can communicate information to a user.
Example @ECHO OFF
ECHO Please insert a disk in drive A: and press any key when ready.

Command REM (short for remark)
Description REM is the MS DOS batch file method of providing comments. Comments are lines of code which are not executed by the batch file, but rather are used to convey information about the workings of the batch file itself. Good batch file programming practice demands a comment at the head of every batch file explaining its use and syntax. Comments can also be put in other parts of the file to clarify ambiguous commands and to 'comment-out' a line of commands so that they are temporarily ignored by the batch file.
Syntax REM line containing comment.
Typical Use REM should be used at the top of every batch file to provide a description and example use. However, too many REM lines are not an example of good programming style! Don't provide a comment for obvious commands - only the tricky ones!
Example REM SFORMAT.BAT : Safe Format
REM
REM This batch file implements a safe version of the format command.
REM The C: drive can not be formatted with this command.

Command PAUSE
Description The PAUSE command prints the message "Press any key to continue..." to the screen and waits for the user to respond.
Syntax PAUSE (it's as simple as that!)
Typical Use The PAUSE command was the only method of getting a user's response in batch files until the choice command arrived in MS DOS 6.x. By issuing instructions with the ECHO command, the PAUSE command waited for the user to read them and respond appropriately.
Example ECHO Please insert the disk in drive A: and
PAUSE

Command GOTO
Description The GOTO command allows a batch file to branch to a different location to continue executing commands from. To tell the batch file where to go to, a label is placed after the GOTO command. This label must conform to several guidelines for it to be a valid batch file label.
Syntax GOTO label
Typical Use Until MS DOS 6.x introduced the FOR command, the GOTO command was a batch files only mechanism of performing a command repeatedly. GOTOs are still the only method in a batch file to perform a sub-set of commands. (MS DOS Batch files do not have sub-procedures)
Example IF %1 == "" GOTO ERROR

Command IF
Description The IF command is used in batch files to test whether a condition is met or not. This allows the batch file to perform a particular action only if a particular condition is met. There are several different variations of the IF command: IF EXIST, IF ERRORLEVEL, and IF x == y (yes! it does use two equal signs!)
Syntax IF EXIST filename or dirname : used to test for the existance of a file or directory in MS DOS. This test will return true if the file does exist.
IF ERRORLEVEL : After a program has finished executing in MS DOS it returns a value to the operating system indicating its success or failure. This value is stored in the variable ERRORLEVEL. By testing this variable, a batch file can deduce the result of the program that just finished running.
IF x == y : This version of the IF statement tests two string values. If string x is equal to string y this test is evaluated to be true, otherwise false.
All of the above IF statements can also be negated with the NOT command. For example -:
IF NOT EXIST filename : Tests to see if the file doesn't exist. This test will return true if the file doesn't exist.
Typical Use The IF statement is one of the most useful batch file commands, and as such is probably the most common. The IF EXIST command is used to check if a file exists before it is copied/moved/opened/etc. The IF ERRORLEVEL allows a batch file to check the return value of another program. The IF STRING1 == STRING2 is commonly used to validate command-line parameters.
Example IF NOT EXIST %1 MKDIR %1

IF ERRORLEVEL 2 GOTO END

IF %1 == "" GOTO ERROR

Command SHIFT
Description The SHIFT command is possibly, at first, the most confusing batch file command. It needn't be. Simply, the SHIFT command increases the number of command-line parameters accessable by a batch file. Each time SHIFT is called, the value in the 1st parameter is discarded and replaced by the value of the 2nd parameter. The value in the 2nd parameter is replaced by the value in the 3rd parameter, etcetera, etcetera, until the 9th parameter is replaced by the previously unavailable 10th parameter.
Syntax SHIFT
Typical Use The SHIFT command provides considerable power to batch files. It allows a batch file to operate on an unknown number of parameters. The SHIFT command is often used in situations where an operation needs to be performed on several files or directories.
Example The following example displays the contents of the files typed after the batch file name one page at a time.

:LOOP
TYPE %1 | MORE
SHIFT
IF "%1" == "" GOTO END
GOTO LOOP
:END

Command CALL
Description The CALL command is used to run another batch file from within a batch file. Execution of the current batch file is paused and the called batch file is run. After the called batch file has finished running, the original batch file is resumed at the line after the CALL statement.
Note: If another batch file is run from within a batch file by simply using its name, after the called batch file finishes executing, control is returned to the Command Line, NOT the original batch file.
Syntax CALL batchfilename [parameters] [switches]
Typical Use The CALL command is used to provide modularity to batch files. Batch files can be re-used effortlessly if they are written with modularity in mind.
Example IF %1 == A: CALL FLOPPY.BAT

Command FOR
Description The FOR command was an invaluable addition to the DOS Batch File Command suite. FOR repeats a command for a number of files, directories, or text-strings.
Syntax FOR variable IN list DO command [parameters] [switches]
Where -:
  • variable is substituted for each element in the list and passed to command. Variable has a special format in batch files.
  • list is a list of filenames (wildcards allowed), directory names, or text-strings that are to be processed by command one at a time.
  • command is a DOS internal or external command to be performed for each element of the list.
Typical Use The FOR command performs the same command for each element of a list. Prior to its introduction, the same effect had to be achieved with GOTOs and IFs, which were messy and sometimes difficult to follow. Use a FOR to do any necessary looping in your batch files.
Example The following is an implementation of the same example presented in the SHIFT example of displaying many files to the screen with MORE.

FOR %%f IN (*.*) DO TYPE %%f | MORE

A lot neater, huh?!

Command CHOICE
Description The CHOICE command is perhaps the best addition to MS DOS Batch File commands. CHOICE makes it possible to accept various user-responses. Before now, users were presented with crude either/or choices in batch files. The CHOICE command allows a batch file to detect a users choice from a lits of options.
Syntax CHOICE [/C:choices] [/N] [/S] [/T:choice,timeout] [TEXT]
Where -:
  • /C:choices : specifies the choices that the user can choose from. The choices can only be single characters.
  • /N : Do not display choices and the '?' at the end of the TEXT prompt.
  • /S : Treat the choices as case sensitive, meaning that 'a' is a different choice from 'A'. By default, case is not sensitive - 'a' is equivalent to 'A'.
  • /T:choice,timeout : Default to choice after timeout seconds.
  • TEXT : The text to display as the prompt of the choice.
Typical Use The CHOICE command has its obvious use in batch files. It is now possible to easily get a users response, thus allowing batch files to be much more interactive, and therefore more useful.
Example The following batch file snippet displays a simple menu (without a question-mark at the end of the prompt) and prompts for the users choice, defaulting to option 2 after 5 seconds :

ECHO 1. MS-DOS Editor.
ECHO 2. MS-Windows. (default)
ECHO 3. Defrag the hard-drive.
ECHO 4. Quit.
CHOICE /C:1234 /N /T:2,5 Please choose a menu option.
IF ERRORLEVEL == 4 GOTO QUIT_MENU
IF ERRORLEVEL == 3 GOTO DEFRAG_HD
IF ERRORLEVEL == 2 GOTO RUN_WIN
IF ERRORLEVEL == 1 GOTO RUN_EDIT
:RUN_EDIT
CALL EDIT
:RUN_WIN
CALL WIN
:DEFRAG_HD
DEFRAG c:
:QUIT_MENU
ECHO Safe to switch off machine now...