ERRORLEVEL innerhalb von IF

Stolperte in eine seltsame Sache mit %ERRORLEVEL% und wollte sehen, ob jemand weiß, warum und wenn es einen Weg gibt, um es zu beheben. Im wesentlichen scheint es, als wenn die Befehle ausgeführt, innerhalb der if-Anweisungen setzen nicht die %ERRORLEVEL% variable. Die ERRORLEVEL (wie in IF ERRORLEVEL 1 Verschieden von IF %ERRORLEVEL% EQU 1 ) überprüfen Sie scheint noch zu funktionieren, obwohl, so kann ich wohl umgehen, aber es wäre immer noch schön, in der Lage zu drucken, der Fehler Ebene. Zum Debuggen oder was auch immer.

@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

Setzen, dass in einer batch-Datei und es läuft erzeugt diese Ausgabe:

C:\Users\username\Documents\work>test.Fledermaus
OUTSIDE_IF 1
'ThisWillSetErrorLevelTo9009ieNotrecognizedcommand' ist nicht als ein interner oder externer Befehl,
betriebsbereiten Programm oder batch-Datei.
OUTSIDE_IF 1
'ThisWillSetErrorLevelTo9009ieNotrecognizedcommand' ist nicht als ein interner oder externer Befehl,
betriebsbereiten Programm oder batch-Datei.
INSIDE_IF ERRORLEVEL 9009
INSIDE_IF2 ERRORLEVEL GREQ 1 9009
OUTSIDE_IF ERRORLEVEL 1

Relevanten Artikel:

InformationsquelleAutor der Frage Srekel | 2010-12-06

Schreibe einen Kommentar