質問

奇妙なものにつまずいただけです %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!
)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top