質問
奇妙なものにつまずいただけです %ERRORLEVEL%
そして、誰かが理由を知っているかどうか、そしてそれを修正する方法があるかどうかを見たかった。基本的に、ステートメントが設定されていない場合、コマンドが内部で実行されたように見えます %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
外部1
「thiswillseterrorlevelto9009ienotecognizedCommand」は、内部または外部コマンド、操作可能なプログラム、またはバッチファイルとして認識されていません。
外部1
「thiswillseterrorlevelto9009ienotecognizedCommand」は、内部または外部コマンド、操作可能なプログラム、またはバッチファイルとして認識されていません。
Inside_if errorlevel 9009
Inside_if2 errorlevel greq 1 9009
outsurtion_if errorlevel 1
関連記事:
解決
使用してみてください setlocal enabledelayedexpansion
バッチファイルの開始時に !ERRORLEVEL!
あなたの内側 IF
. 。これは私のために働いているようです:
@echo off
setlocal enabledelayedexpansion
dir nul
echo %ERRORLEVEL%
if .1.==.1. (
urklbkrlksdj - not a command
echo %ERRORLEVEL%
echo !ERRORLEVEL!
)