2016-06-05 2 views
0

Быстрый вопрос: Я видел односимвольные меню выбора в пакетных файлах везде, но как вы делаете несколько меню выбора символов?Многосимвольное меню выбора партии

Вот пример (не работает):

@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

меню односимвольный на основе 'choice' команды имеют то преимущество, что позволяет избежать ошибок пользователя«автоматически»и очень простой (входной параметр и выбор принимает _TWO commands_:' 'choice' и Гото опцию-% ErrorLevel% '). В меню с несколькими символами вам нужно проверить правильность ввода пользователей (потому что они могут вводить _any string_), поэтому они сложнее ... – Aacini

+0

Я буду использовать его сам для ярлыков для разных инструментов, которые мне нужны для работы, поэтому пользователь ошибка равна нулю, так как я буду знать, что мне нужно вводить для каждого из них. Но приближается к 50, поэтому я использовал большинство клавиш на клавиатуре, должен был что-то сделать. –

+0

Вы можете подразделить множество опций в нескольких вложенных подменю. Если меню содержит более 15-20 опций, его трудно прочитать. С другой стороны, если вы уже знаете название 50 вариантов, то представление меню бесполезно ... – Aacini

ответ

0

Вы должны использовать переменную "%answer%", а не строку "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. Я не обращал внимания, когда ставил «вместо%». Хороший момент, спасибо! –

Смежные вопросы