我开发了一个批处理脚本,用于检查计算机上安装的软件版本,并根据版本选择正确的版本补丁并在计算机上安装(运行)。
然而,我遇到一个问题,当我检查文件路径中的特定字符串并且文件不存在时,它应该转到其他但在我的情况下它仍然继续使用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选项吗?我该怎么处理呢?
答案 0 :(得分:1)
如果您阅读if
命令的说明(可通过if /?
获得),您将意识到if errorlevel number command
将在错误级别更大或相等时执行命令比数字。如果要在数字精确某个值时执行命令,请使用以下格式:
IF %ERRORLEVEL% EQU 1 (GOTO CHECK_RFA_v8.6) ELSE GOTO CHECK_MET_v8.6