【发布时间】:2011-05-21 01:20:51
【问题描述】:
刚刚偶然发现%ERRORLEVEL% 发生了一件奇怪的事情,想看看是否有人知道原因以及是否有办法解决它。从本质上讲,似乎在 if 语句中执行的命令没有设置 %ERRORLEVEL% 变量。 ERRORLEVEL(如 IF ERRORLEVEL 1,与 IF %ERRORLEVEL% EQU 1 不同)检查似乎仍然可以正常工作,所以我可能可以解决它,但能够打印错误级别仍然很好。用于调试或其他。
@echo off
Set TESTVAR=1
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF %ERRORLEVEL%
ThisWillSetErrorLevelTo9009ieNotRecognizedCommand
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF %ERRORLEVEL%
ThisWillSetErrorLevelTo9009ieNotRecognizedCommand
IF %TESTVAR% EQU 1 (
Set ERRORLEVEL=
tasklist | find /I "IsntRunning.exe" > NUL
echo INSIDE_IF ERRORLEVEL %ERRORLEVEL%
IF ERRORLEVEL 1 (
echo INSIDE_IF2 ERRORLEVEL GREQ 1 %ERRORLEVEL%
)
IF ERRORLEVEL 2 (
echo INSIDE_IF2 ERRORLEVEL GREQ 2 %ERRORLEVEL%
)
IF ERRORLEVEL 3 (
echo INSIDE_IF2 ERRORLEVEL GREQ 3 %ERRORLEVEL%
)
)
tasklist | find /I "IsntRunning.exe" > NUL
echo OUTSIDE_IF ERRORLEVEL %ERRORLEVEL%
@echo on
将其放入批处理文件并运行它会产生以下输出:
C:\Users\username\Documents\work>test.bat
OUTSIDE_IF 1
'ThisWillSetErrorLevelTo9009ieNotRecognizedCommand' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
OUTSIDE_IF 1
'ThisWillSetErrorLevelTo9009ieNotRecognizedCommand' 未被识别为内部或外部命令, 可运行的程序或批处理文件。
INSIDE_IF 错误级别 9009
INSIDE_IF2 错误级别 GREQ 1 9009
OUTSIDE_IF 错误级别 1
相关文章:
【问题讨论】:
标签: batch-file errorlevel