Batch Errorlevel zwischenspeichern statt gleich zu verarbeiten

Der Errorlevel fängt den Rückgabewert des vorhergehenden Befehls auf und gibt ihn aus.
Also:

run bla.exe
echo %errorlevel%

Oftmals möchte ich aber zwischen dem Befehl und der Reaktion auf den Errorlevel noch weitere Befehle durchführen.
Denkbar wären auch Sprungmarken, die auf den Errorlevel reagieren. Bisher habe ich diese direkt als nächsten Befehl bearbeiten müssen, oftmal wären vorher Logeinträge oder ähnliches sinnvoll gewesen.

Heute kam ich auf die Idee den Errorlevel bestimmter Befehle einfach in Variablen zwischenzuspeichern:

:repair
%o2k10%\setup.exe /repair ProPlus /config %o2k10%\ProPlus.WW\SilentRepairConfig.xml
set repairerrorlevel=%errorlevel%
REM weitere Befehle...
echo %date% %time% - Office repariert, errorlevel: %repairerrorlevel% >> %log%
REM weitere Befehle...
if %errorlevel%==0 (goto bla) else (goto end)
:wait
ping 127.0.0.1 -n 300 >> nul
goto repair
:end
if %repairerrorlevel%==1012 goto wait
if %repairerrorlevel%==1018 goto wait
if %repairerrorlevel%==1019 goto wait
if %repairerrorlevel%==1030 shutdown -r -f -t 120 -c "Um die Office Reperatur erfolgreich abzuschliessen muss der Computer neugestartet werden. Der Computer wird in 120 Sekunden neugestartet!"

So lässt sich der Errorlevel eines Befehls beliebig oft abfragen und verarbeiten. Ohne Zwischenspeicherung wäre das nicht möglich.

Schreibe einen Kommentar