2016-06-05 14 views
0

Schnelle Frage: Ich habe Single-Zeichen-Auswahlmenüs in Batch-Dateien überall gesehen, aber wie machen Sie mehrere Zeichen Auswahlmenüs?Multi-Charge-Batch-Auswahlmenü

Hier ist ein Beispiel (nicht funktioniert):

@echo off 
echo Example Menu 
GOTO AGAIN 

:AGAIN 
    CD /D "%~dp0" 
    echo Restore, Apps, Restart 

    set /p answer= 
    if /i "%answer:~,1%" EQU "1" GOTO RESTORE 
    if /i "%answer:~,1%" EQU "2" GOTO APPS 
    if /i "%answer:~,1%" EQU "0" shutdown -t 0 -r -f 

    if "answer"=="restore" GOTO RESTORE 
    if "answer"=="apps" GOTO APPS 
    if "answer"=="restart" shutdown -t 0 -r -f 

:RESTORE 
    start systempropertiesprotection -k 
    GOTO AGAIN 

:APPS 
    start appwiz.cpl -k 
    GOTO AGAIN 
+0

Ein einzelnes Zeichen Menü basierend auf 'choice' Befehl haben den Vorteil, dass Eingabe- und Auswahlbenutzerfehler„automatisch“und sind sehr einfach (die Option nimmt vermeidet _two commands_:' choice' und 'goto Option-% errorlevel% '). In einem Menü mit mehreren Zeichen müssen Sie testen, ob die Benutzereingaben korrekt sind (weil sie _yan_string_ eingeben können), also sind sie komplexer ... – Aacini

+0

Ich benutze es nur selbst für Shortcuts für verschiedene Tools, die ich für die Arbeit brauche, also Benutzer Fehler ist null, da ich wissen werde, was ich für jeden von ihnen eingeben muss. Aber es sind fast 50 und so habe ich die meisten Tasten auf der Tastatur verbraucht, musste etwas dagegen tun. –

+0

Sie können viele Optionen in mehrere verschachtelte Untermenüs unterteilen. Wenn ein Menü mehr als 15-20 Optionen hat, ist es schwierig zu lesen. Auf der anderen Seite, wenn Sie bereits den Namen der 50 Optionen kennen, dann ist die Präsentation des Menüs nutzlos ... – Aacini

Antwort

0

Sie haben "%answer%" die Variable zu verwenden, nicht die Zeichenfolge "answer".

@echo off 
echo Example Menu 

:AGAIN 
    CD /D "%~dp0" 
    echo Restore, Apps, Restart 

    set /p answer= 

    if /i "%answer%" == "restore" GOTO RESTORE 
    if /i "%answer%" == "apps" GOTO APPS 
    if /i "%answer%" == "restart" GOTO RESTART 

    echo That was not a valid option. 
    GOTO AGAIN 

:RESTORE 
    echo You want to restore? 
    GOTO AGAIN 

:APPS 
    echo You want apps? 
    GOTO AGAIN 

:RESTART 
    echo You want to restart? 
    GOTO AGAIN 
+0

Wow. Ich habe nicht aufgepasst, als ich "statt%" gesetzt habe. Guter Punkt, danke! –