我无法理解批次的选择错误代码

时间:2018-11-27 23:11:56

标签: batch-file if-statement cmd choice

如果我有这样的代码:

@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。如果按第二个选项,则无法工作。
我真的想知道为什么错误顺序很重要,如果一批应该逐行执行,还是我错了?
简而言之,我想了解的是错误代码在这里的工作方式

2 个答案:

答案 0 :(得分:2)

只是一个提示,当使用附加到goto标签的CFLAGS变量时,事情可能很简单:

%errorlevel%

答案 1 :(得分:0)

C:\>if /?
...
IF [NOT] ERRORLEVEL number command
...
ERRORLEVEL number   Specifies a true condition if the last program run returned
                    an exit code equal to or greater than the number specified.

换句话说,if errorlevel 1会针对任何错误级别(除了0 =无错误)执行,因为它们都等于或大于1。