我无法理解批处理的选择错误代码
I can't understand choice error codes of batch
如果我有这样的代码:
@echo off
choice /C BL /M "Clear screen or list actual directory"
if errorlevel 2 goto l
if errorlevel 1 goto b
:l
tree /f
goto final
:b
cls
goto final
:final
我知道这确实有效,但我对错误级别部分的一件事感到困惑。
我先写了,同样的代码,但是像这样:
if errorlevel 1 goto l
if errorlevel 2 goto b
这样它就不能正常工作它只会记住错误代码 1。如果你按第二个选项则不起作用。
我真的很想知道为什么错误的顺序很重要,如果一个批处理应该逐行执行,还是我错了?
简而言之,我想了解的是错误代码在这里是如何工作的
C:\>if /?
...
IF [NOT] ERRORLEVEL number command
...
ERRORLEVEL number Specifies a true condition if the last program run returned
an exit code <em>equal to or greater than</em> the number specified.
换句话说,if errorlevel 1
执行任何错误级别(除了 0 = 无错误),因为它们都等于或大于 1。
提示一下,当使用附加到 goto 标签的 %errorlevel%
变量时,事情会很简单:
@echo off
choice /C BL /M "Clear screen or list actual directory"
goto :choice%errorlevel%
:choice1 B
tree /f
goto final
:choice2 L
cls
goto final
:final
pause
如果我有这样的代码:
@echo off
choice /C BL /M "Clear screen or list actual directory"
if errorlevel 2 goto l
if errorlevel 1 goto b
:l
tree /f
goto final
:b
cls
goto final
:final
我知道这确实有效,但我对错误级别部分的一件事感到困惑。 我先写了,同样的代码,但是像这样:
if errorlevel 1 goto l
if errorlevel 2 goto b
这样它就不能正常工作它只会记住错误代码 1。如果你按第二个选项则不起作用。
我真的很想知道为什么错误的顺序很重要,如果一个批处理应该逐行执行,还是我错了?
简而言之,我想了解的是错误代码在这里是如何工作的
C:\>if /?
...
IF [NOT] ERRORLEVEL number command
...
ERRORLEVEL number Specifies a true condition if the last program run returned
an exit code <em>equal to or greater than</em> the number specified.
换句话说,if errorlevel 1
执行任何错误级别(除了 0 = 无错误),因为它们都等于或大于 1。
提示一下,当使用附加到 goto 标签的 %errorlevel%
变量时,事情会很简单:
@echo off
choice /C BL /M "Clear screen or list actual directory"
goto :choice%errorlevel%
:choice1 B
tree /f
goto final
:choice2 L
cls
goto final
:final
pause