Sre*_*kel 34 batch-file errorlevel
只是偶然发现了一个奇怪的事情,%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
Run Code Online (Sandbox Code Playgroud)
将它放在批处理文件中并运行它会产生以下输出:
C:\ Users\username\Documents\work> test.bat
OUTSIDE_IF
1'WhisWillSetErrorLevelTo9009ieNotRecognizedCommand'无法识别为内部或外部命令,可运行程序或批处理文件.
OUTSIDE_IF
1'WhisWillSetErrorLevelTo9009ieNotRecognizedCommand'未被识别为内部或外部命令,可运行程序或批处理文件.
INSIDE_IF ERRORLEVEL 9009
INSIDE_IF2 ERRORLEVEL GREQ 1 9009
OUTSIDE_IF ERRORLEVEL 1
相关文章:
Jim*_*vis 42
尝试使用setlocal enabledelayedexpansion在批处理文件的开始,和!ERRORLEVEL!里面的IF.这似乎对我有用:
@echo off
setlocal enabledelayedexpansion
dir nul
echo %ERRORLEVEL%
if .1.==.1. (
urklbkrlksdj - not a command
echo %ERRORLEVEL%
echo !ERRORLEVEL!
)
Run Code Online (Sandbox Code Playgroud)