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:
- http://blogs.msdn.com/b/oldnewthing/archive/2008/09/26/8965755.aspx
- http://support.microsoft.com/kb/69576
InformationsquelleAutor der Frage Srekel | 2010-12-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit
setlocal enabledelayedexpansion
am Anfang deiner batch-Datei, und!ERRORLEVEL!
in IhremIF
. Dies scheint für mich arbeiten:InformationsquelleAutor der Antwort Jim Davis