The if statement has a lot of functionality. Common uses include the following. if [/i] [not]if [/i] [not] errorlevel number command [else expression] if [/i] [not] string1==string2 command [else expression] if [/i] [not] exist filename command [else expression] The /i switch, when specified, forces string comparisons to ignore case. The /i switch can also be used on the string1==string2 form of if. These comparisons are generic, in that if both string1 and string2 are both comprised of all numeric digits, then the strings are converted to numbers and a numeric comparison is performed. defined variable The defined conditional works just like exist except it takes an environment variable name and returns true if the environment variable is defined. Three variables are added with this conditional: %errorlevel%, %cmdcmdline%, and %cmdextversion%. %errorlevel% expands into a string representation of the current value of errorlevel, provided that there is not already an environment variable with the name ERRORLEVEL, in which case you will get its value instead. After running a program, the following illustrates errorlevel use: The /i parameter makes the comparison case-insensitive. The comparison can be one of the following. EQU equal NEQ not equal LSS less than LEQ less than or equal GTR greater than GEQ greater than or equal if errorlevel if exist file_name if errorlevel 1 if not errorlevel 2 goto el1 if errorlevel 2 if not errorlevel 3 goto el2 goto el%erorlevel% :el0 echo Program had return code 0 :el1 echo Program had return code 1 You can also use the comparison operators listed above at compare-op: if %errorlevel% LEQ 1 goto okay Using if to verify the presence of a directory: if exist c:\dir\nul echo c:\dir\ does exist The if command cannot be used to test directly for a directory, but the null (NUL) device does exist in every directory. Therefore, you can test for the null device to determine whether a directory exists.