我如何在 cmd 中处理 ERRORLEVEL 9

How do i handle ERRORLEVEL 9 in cmd

我开发了一个批处理脚本,用于检查机器上安装的软件版本,并根据版本选择正确的版本补丁并将其安装(运行)在机器上。

但是我遇到了一个问题,当我检查文件路径中的特定字符串时,如果该文件不存在,那么它应该转到其他地方,但在我的情况下,它仍然继续使用 ERRORLEVEL 1 选项。请查看以下命令:

sfk find  "%PATH%\Env\Met\Env.xml" "<Version>806</Version>"
Pause
ECHO %ERRORLEVEL%
Pause
IF ERRORLEVEL 1 (GOTO CHECK_RFA_v8.6) ELSE GOTO CHECK_MET_v8.6

某些基于订阅的客户可能会限制进入市场,因此软件中可能会遗漏很少的市场。在这种情况下,由于缺少一个市场,文件 Env.xml 不存在于路径中,所以我希望它转到其他 (CHECK_MET_v8.6) 而不是继续错误级别 1 (CHECK_RFA_8.6).

我不明白的是,如果错误级别不是 1,它为什么会变成 CHECK_RFA_v8.6。我添加了 ECHO %ERRORLEVEL% 来检查它返回了什么,它是 9。

输出:

Where is software installed?
error: no such file or dir: C:\AR\Env\Met\Env.xml
1 errors occurred.
Press any key to continue . . .
9
Press any key to continue . . .
CHECKING RFA v8.6

如果返回的错误代码是 9,有人可以解释为什么它会继续使用 ERRORLEVEL 1 选项吗?我该如何处理?

如果您阅读 if 命令的说明(可通过 if /? 获得),您将意识到 if errorlevel number command 将在错误级别 更大时执行该命令或等于 比数字。如果要在数字正好某个值时执行命令,使用这种形式:

IF %ERRORLEVEL% EQU 1 (GOTO CHECK_RFA_v8.6) ELSE GOTO CHECK_MET_v8.6