Performs conditional processing in batch programs.
For examples of how to use this command, see Examples.
Syntax
if [not] ERRORLEVEL <Number> <Command> [else <Expression>] if [not] <String1>==<String2> <Command> [else <Expression>] if [not] exist <FileName> <Command> [else <Expression>]
If command extensions are enabled, use the following syntax:
if [/i] <String1> <CompareOp> <String2> <Command> [else <Expression>] if cmdextversion <Number> <Command> [else <Expression>] if defined <Variable> <Command> [else <Expression>]
Parameters
Parameter | Description |
---|---|
not |
Specifies that the command should be carried out only if the condition is false. |
errorlevel <Number> |
Specifies a true condition only if the previous program run by Cmd.exe returned an exit code equal to or greater than Number. |
<Command> |
Specifies the command that should be carried out if the preceding condition is met. |
<String1>==<String2> |
Specifies a true condition only if String1 and String2 are the same. These values can be literal strings or batch variables (for example, %1). You do not need to enclose literal strings in quotation marks. |
exist <FileName> |
Specifies a true condition if the specified file name exists. |
<CompareOp> |
Specifies a three-letter comparison operator. The following list represents valid values for CompareOp: EQU Equal to NEQ Not equal to LSS Less than LEQ Less than or equal to GTR Greater than GEQ Greater than or equal to |
/i |
Forces string comparisons to ignore case. You can use /i on the String1==String2 form of if. These comparisons are generic, in that if both String1 and String2 are comprised of numeric digits only, the strings are converted to numbers and a numeric comparison is performed. |
cmdextversion <Number> |
Specifies a true condition only if the internal version number associated with the command extensions feature of Cmd.exe is equal to or greater than the number specified. The first version is 1. It increases by increments of one when significant enhancements are added to the command extensions. The cmdextversion conditional is never true when command extensions are disabled (by default, command extensions are enabled). |
defined <Variable> |
Specifies a true condition if Variable is defined. |
<Expression> |
Specifies a command-line command and any parameters to be passed to the command in an else clause. |
/? |
Displays help at the command prompt. |
Remarks
- If the condition specified in an if clause is true, the
command that follows the condition is carried out. If the condition
is false, the command in the if clause is ignored and the
command executes any command that is specified in the else
clause.
- When a program stops, it returns an exit code. To use exit
codes as conditions, use errorlevel.
- If you use defined, the following three variables are
added to the environment: %errorlevel%, %cmdcmdline%,
and %cmdextversion%.
- %errorlevel% expands into a string representation of the
current value of the ERRORLEVEL environment variable. This assumes
that there is not an existing environment variable with the name
ERRORLEVEL—if there is, you will get that ERRORLEVEL value
instead.
- %cmdcmdline% expands into the original command line that
was passed to Cmd.exe prior to any processing by Cmd.exe. This
assumes that there is not an existing environment variable with the
name CMDCMDLINE—if there is, you will get the CMDCMDLINE value
instead.
- %cmdextversion% expands into the string representation
of the current value of cmdextversion. This assumes that
there is not an existing environment variable with the name
CMDEXTVERSION—if there is, you will get the CMDEXTVERSION value
instead.
- %errorlevel% expands into a string representation of the
current value of the ERRORLEVEL environment variable. This assumes
that there is not an existing environment variable with the name
ERRORLEVEL—if there is, you will get that ERRORLEVEL value
instead.
- You must use the else clause on the same line as the
command after the if.
Examples
To display the message "Cannot find data file" if the file Product.dat cannot be found, type:
if not exist product.dat echo Cannot find data file
To format a disk in drive A and display an error message if an error occurs during the formatting process, type the following lines in a batch file:
:begin @echo off format a: /s if not errorlevel 1 goto end echo An error occurred during formatting. :end echo End of batch program.
To delete the file Product.dat from the current directory or display a message if Product.dat is not found, type the following lines in a batch file:
IF EXIST Product.dat ( del Product.dat ) ELSE ( echo The Product.dat file is missing. )
Note | |
These lines can be combined into a single line as follows: |
IF EXIST Product.dat (del Product.dat) ELSE (echo The Product.dat file is missing.)
To echo the value of the ERRORLEVEL environment variable after running a batch file, type the following lines in the batch file:
goto answer%errorlevel% :answer1 echo Program had return code 1 :answer0 echo Program had return code 0 goto end :end echo Done!
To go to the "okay" label if the value of the ERRORLEVEL environment variable is less than or equal to 1, type:
if %errorlevel% LEQ 1 goto okay