Dor*_*ron -3 windows windows-7
在批处理文件中,我有一个不一致的错误级别行为:
下面的代码总是在批处理文件中的一个位置(中间的某个地方 - 正是我需要它的地方)给出错误级别 0。
我只复制了这个片段并将它放在批处理文件的开头和结尾。在这些位置,结果始终为 1。
这是代码片段:
目录 c:\
IF ERRORLEVEL 1 echo ERRORLEVEL 为 1 或更多
知道如何让它在文件中间也能工作吗?我究竟做错了什么?我不想用 GOTO 解决它(到文件末尾,然后回到我需要结果的地方。)
%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 这不会发生。
| 归档时间: |
|
| 查看次数: |
4143 次 |
| 最近记录: |