批处理文件中的错误级别不一致

批处理文件中的错误级别不一致

在批处理文件中,我遇到不一致的错误级别行为:

以下代码始终在批处理文件内的某个位置(中间某处 - 正是我需要的位置)给出错误级别 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,因此不会发生这种情况。

相关内容