我正在尝试将ERRORLEVEL
环境变量存储到本地批处理变量中。但它总是变成0
。
CALL foo.exe
SET LEVEL=%ERRORLEVEL%
IF ERRORLEVEL 1 (
SET /A ERRORCOUNT=ERRORCOUNT+1
) ELSE (
SET /A OK=OK+1
)
ECHO/ >> logtemp.txt
ECHO ** EXIT %LEVEL% *******************************
我尝试ECHO %ERRORLEVEL%
,但它也始终打印0
。
foo.exe
正在生成错误,ECHO %ERRORLEVEL%
可以从命令提示符看到该错误,ERRORCOUNT
已正确更新。
答案 0 :(得分:7)
我认为你的问题不是错误级别,而是你的foo.exe。
带有错误级别的简单测试有效
(call)
将errorlevel设置为1
(call)
SET LEVEL=%ERRORLEVEL%
IF ERRORLEVEL 1 (
SET /A ERRORCOUNT=ERRORCOUNT+1
) ELSE (
SET /A OK=OK+1
)
ECHO/ >> logtemp.txt
ECHO ** EXIT %LEVEL% *******************************
第二个样本:
if 1==1 (
call set level=%%errorlevel%%
call echo %%level%%
call echo %%errorlevel%%
echo %errorlevel%
)
或延迟扩张
setlocal EnableDelayedExpansion
if 1==1 (
set level=!errorlevel!
echo !level! !errorlevel!
)
答案 1 :(得分:1)
ERRORLEVEL
和%ERRORLEVEL%
不一样(请参阅http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx)。
该行
IF ERRORLEVEL 1
应该是
IF %ERRORLEVEL% EQU 1
产生渴望的答案。