Correct Testing Precedence of Batch File ERRORLEVELs

คำแถลงการณ์ปฏิเสธความรับผิดชอบเนื้อหา KB ที่เกษียณ

บทความนี้มีเนื้อหาเกี่ยวกับผลิตภัณฑ์ที่ Microsoft ไม่ได้ให้การสนับสนุนอีกต่อไป ดังนั้น บทความนี้จึงเสนอเนื้อหา "อย่างที่เป็น" และจะไม่มีการปรับปรุงเนื้อหาอีกต่อไป

Summary

When you use multiple IF ERRORLEVEL statements in batch files, the order in which the ERRORLEVELs are tested numerically is important. The correct order is descending (highest to lowest). This ordering is from the way ERRORLEVELs are tested. The IF condition is set to TRUE when the ERRORLEVEL is equal to, or greater than, the ERRORLEVEL number.

More Information

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 of success or failure. This example would work correctly if the ERRORLEVEL testing 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
คุณสมบัติ

รหัสบทความ: 39585 - การตรวจสอบครั้งสุดท้าย: 12 พ.ค. 2003 - ฉบับแก้ไข: 1

คำติชม