This article was previously published under Q39585
Retired KB Content Disclaimer
This article was written about products for which Microsoft no longer offers support. Therefore, this article is offered "as is" and will no longer be updated.
When you use multiple IF ERRORLEVEL statements in batch files, the order inwhich the ERRORLEVELs are tested numerically is important. The correctorder is descending (highest to lowest). This ordering is from the wayERRORLEVELs are tested. The IF condition is set to TRUE when the ERRORLEVELis equal to, or greater than, the ERRORLEVEL number.
The following batch file fragment demonstrates this INCORRECT behavior:
rem (execute a program which returns an errorlevel of 0 or 1) if errorlevel 0 goto ZERO if errorlevel 1 goto ONE goto END :ZERO echo a Zero was returned! goto END :ONE echo a One was returned! :END
The above example always branches to the "ZERO" label, regardless ofsuccess or failure. This example would work correctly if the ERRORLEVELtesting was made in descending order.
The CORRECT way to write such a batch file is as follows:
rem (execute a program which returns an errorlevel of 0 or 1) if errorlevel 1 goto ONE if errorlevel 0 goto ZERO goto END :ZERO echo a Zero was returned! goto END :ONE echo a One was returned! :END