我如何在cmd中处理ERRORLEVEL 9

时间:2015-06-23 00:25:52

标签: batch-file batch-processing

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

然而,我遇到一个问题,当我检查文件路径中的特定字符串并且文件不存在时,它应该转到其他但在我的情况下它仍然继续使用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不存在于路径中,因此我希望它转到else(CHECK_MET_v8.6)而不是继续使用errorlevel 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选项吗?我该怎么处理呢?

1 个答案:

答案 0 :(得分:1)

如果您阅读if命令的说明(可通过if /?获得),您将意识到if errorlevel number command将在错误级别更大或相等时执行命令比数字。如果要在数字精确某个值时执行命令,请使用以下格式:

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