批处理文件中的 ERRORLEVEL 不一致

Dor*_*ron -3 windows windows-7

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

下面的代码总是在批处理文件中的一个位置(中间的某个地方 - 正是我需要它的地方)给出错误级别 0。

我只复制了这个片段并将它放在批处理文件的开头和结尾。在这些位置,结果始终为 1。

这是代码片段:

目录 c:\

IF ERRORLEVEL 1 echo ERRORLEVEL 为 1 或更多

知道如何让它在文件中间也能工作吗?我究竟做错了什么?我不想用 GOTO 解决它(到文件末尾,然后回到我需要结果的地方。)

use*_*517 5

%ERRORLEVEL% 不是 ERRORLEVEL

您混淆了命令解释器 ERRORLEVEL 返回值和环境变量 ERRORLEVEL。当命令运行时,它会设置 ERRORLEVEL 值而不是环境变量值。您可以使用

IF ERRORLEVEL n
Run Code Online (Sandbox Code Playgroud)

如果 ERRORLEVEL 返回值是 n 或更高,则返回 true 的命令,例如

dir C:\

<directory listing omitted>

IF ERRORLEVEL 1 echo ERRORLEVEL is 1 or more
Run Code Online (Sandbox Code Playgroud)

什么都不打印,而

dir C:\somenonexistentdir

File Not Found

IF ERRORLEVEL 1 echo ERRORLEVEL is 1 or more
ERRORLEVEL is 1 or more
Run Code Online (Sandbox Code Playgroud)

消息被打印出来。我的猜测是您正在脚本中设置 %ERRORLEVEL% 的值,并期望稍后的返回值覆盖它。由于 %ERRORLEVEL% 不是 ERRORLEVEL 这不会发生。