Korrekte Abfrage von Errorleveln in Batchdateien

Ich wollte gerade ein kleines CMD-Script zum Starten eines Geräts per WOL (Wake-on-LAN) schreiben und musste ein wenig Rätselraten,als mir die Sicherheitsabfrage im Script  (Wirklich Starten J/N?) immer die gleiche Auswahl getroffen hat,egal wofür ich mich entschieden habe.

„Problem“ ist die Batchlogik. Wenn man andere Errorlevel als 0 oder 1 abfragen will,dann muss man die entsprechenden Bedingungen absteigend ausführen. Das hat etwas damit zu tun,dass man meist eher die Abfrage braucht ob Fehler oder auch nicht.

@echo off
choice /c nj /M "NAS starten ?"
echo %errorlevel%
@if %errorlevel% == 2 goto JA
@if %errorlevel% == 1 goto NEIN

:NEIN
echo Du willst nicht :(
goto ENDE

:JA
wol <mac-adresse> <ip-adresse>
:ENDE

 

Wichtig in diesem Fall: Choice gibt die Errorlevel für alle „Choices“ beginnend bei 1 aus. Wenn man statt nj also jn schreibt,dann muss man auch die Sprungmarke am Ende der „if“-Abfrage anpassen.

Die Lösung hab ich hier gefunden: https://hope-this-helps.de/serendipity/archives/BATCH-Richtige-ERRORLEVEL-Auswertung-469.html