Batch CHOICE Abfrage

Horst_33

Lieutenant
Registriert
Dez. 2008
Beiträge
684
Hi,

ich hab ein Problem mit einen kleinen Teil eines Batch Scriptes, was ich gerade bastel... es läuft darauf raus, dass Registry Schlüssel von Remotecomputern geändert werden sollen, mithilfe von diversen abfragen soll das ganze Idiotensicherer werden. Leider funktioniert gerade die Schlüsseltypabfrage nicht...

Code:
:start

@echo off

CHOICE /C SMEDQBN /M "REG_[S]Z - [M]ULTI_SZ - [E]XPAND_SZ - [D]WORD - [Q]WORD - [B]INRY - [N]one"
IF ERRORLEVEL 255 GOTO END
IF ERRORLEVEL 7 set KEY_TYPE=REG_NONE ELSE
IF ERRORLEVEL 6 set KEY_TYPE=REG_BINARY ELSE
IF ERRORLEVEL 5 set KEY_Type=REG_QWORD ELSE
IF ERRORLEVEL 4 set KEY_Type=REG_DWORD ELSE
IF ERRORLEVEL 3 set KEY_Type=REG_EXPAND_SZ ELSE
IF ERRORLEVEL 2 set KEY_Type=REG_MULTI_SZ ELSE
IF ERRORLEVEL 1 set KEY_Type=REG_SZ

echo %KEY_TYPE%
echo %ERRORLEVEL%

pause

set KEY_TYPE=0

echo.
echo.
echo.

echo %KEY_TYPE%

goto start


Hier jetzt mal in der Form des Testscriptes für diesen Part. Es wird immer der Wert REG_SZ ausgegeben, obwohl die ERRORLEVEL richtig wären. Was mache ich falsch?
 
IF ERRORLEVEL 1 set KEY_Type=REG_SZ

bedeutet

WENN ERRORLEVEL GROESSER ODER GLEICH 1 IST , DANN ...

Frage einfach den ERRORLEVEL in der umgekehrten Reihenfolge ab, dann funktioniert es.
Das ELSE musst du weglassen.
 
Ah sry... die ELSE waren noch von nen früheren Test. Hast recht, die machen da wenig Sinn.

Das komische ist, dass alle anderen Choice Abfragen funktionieren, wie z.B.

Code:
CHOICE /C ELV /M "Wert: [E]rstellen - [L]oeschen - [V]erlassen"
IF ERRORLEVEL 255 GOTO END
IF ERRORLEVEL 3 GOTO END
IF ERRORLEVEL 2 GOTO DEL
IF ERRORLEVEL 1 GOTO ADD

Choice /?

Code:
(...) Führen Sie die ERRORLEVE-Parameter in absteigender Reihenfolge auf, falls Sie diese in einem Batchprogramm verwenden.

Funktioniert zwar jetzt in umgekehrter Reihenfolge, aber trotzdem komisch.
 
Geht vielleicht auch das hier?

Code:
set /p NewPath=Select destination path:

Bei der Eingabe wird die Variable NewPath gesetzt. Die Errorlevel-Geschichte ist doch ätzend und veraltet.

gruß
hostile
 
Zurück
Oben