Kann jemand mir bitte helfen, das Verhalten von %ERRORLEVEL%
Variable zu verstehen und warum es nicht nach einer CALL
gesetzt wird, während im Inneren eines IF
zu sein, das heißt die ECHO %ERRORLEVEL%.2
Linie?IF, CALL EXIT und% Error-% in einer .bat
@ECHO OFF
SET ERRORLEVEL
VERIFY > NUL
ECHO %ERRORLEVEL%.0
IF ERRORLEVEL 1 ECHO SNAFU
IF %ERRORLEVEL% == 0 (
ECHO %ERRORLEVEL%.1
CALL :FOO
ECHO %ERRORLEVEL%.2
IF ERRORLEVEL 42 ECHO 42.3
)
GOTO :EOF
:FOO
EXIT /B 42
GOTO :EOF
STDOUT
C:\Users\Ilya.Kozhevnikov\Dropbox>foo.bat
Environment variable ERRORLEVEL not defined
0.0
0.1
0.2
42.3
jedoch ohne die IF
%ERRORLEVEL%
Variable gesetzt ist, wie erwartet.
@ECHO OFF
SET ERRORLEVEL
VERIFY > NUL
ECHO %ERRORLEVEL%.0
IF ERRORLEVEL 1 ECHO SNAFU
REM IF %ERRORLEVEL% == 0 (
ECHO %ERRORLEVEL%.1
CALL :FOO
ECHO %ERRORLEVEL%.2
IF ERRORLEVEL 42 ECHO 42.3
REM)
GOTO :EOF
:FOO
EXIT /B 42
GOTO :EOF
STDOUT
C:\Users\Ilya.Kozhevnikov\Dropbox>foo.bat
Environment variable ERRORLEVEL not defined
0.0
0.1
42.2
42.3
möglich Duplikat [Windows-Batch innerhalb IF nicht funktioniert SET] in einem Befehlszeilenfenster gelesen werden kann (http : //stackoverflow.com/questions/9102422/windows-batch-set-inside-if-not-working) – Laf
Siehe die Frage, die ich als ein Duplikat markiert habe. Dies erklärt genau, was mit Ihrem Skript passiert und was Sie tun müssen, um das Problem zu beheben. – Laf