在批处理文件中,我遇到不一致的错误级别行为:
以下代码始终在批处理文件内的某个位置(中间某处 - 正是我需要的位置)给出错误级别 0。
我仅复制了此代码片段并将其放在批处理文件的开头和结尾。在这些位置,结果始终为 1。
以下是代码片段:
目录 c:\
如果错误级别为 1,则回显错误级别为 1 或更大
知道如何让它在文件中间也能工作吗?我做错了什么?我不想用 GOTO(转到文件末尾再回到我需要结果的地方)来解决这个问题。
答案1
%ERRORLEVEL% 不是 ERRORLEVEL
您混淆了命令解释器 ERRORLEVEL 返回值和环境变量 ERRORLEVEL。命令运行时,它会设置 ERRORLEVEL 值,而不是环境变量值。您可以使用
IF ERRORLEVEL n
如果 ERRORLEVEL 返回值为 n 或更高,则返回 true 的命令,例如
dir C:\
<directory listing omitted>
IF ERRORLEVEL 1 echo ERRORLEVEL is 1 or more
不会打印任何内容,而
dir C:\somenonexistentdir
File Not Found
IF ERRORLEVEL 1 echo ERRORLEVEL is 1 or more
ERRORLEVEL is 1 or more
消息已打印。我猜您在脚本中设置了 %ERRORLEVEL% 的值,并希望后续返回值覆盖此值。由于 %ERRORLEVEL% 不是 ERRORLEVEL,因此不会发生这种情况。