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.