Все опции в команде выбора

Мне интересно, есть ли хороший и чистый способ добавить «выбрать все варианты» при создании меню выбора в пакетном режиме.

В настоящее время у меня есть настройка выбора: очистить элемент 1, очистить элемент 2, очистить элемент 3 (очистить все), выйти и тайм-аут, который пользователь не может видеть.

Если мне нужно, я просто повторно добавлю весь свой код в область «очистить все». Я надеялся увидеть, есть ли способ просто «очистить все» использовать определенные 1 и 2, а затем вернуться к :start, как и все остальное.

Ответ: я воспользовался идеей Аачини о "наборе опций" и придумал еще более простой ответ. Я изменил «GOTO :start"to"GOTO :ClearCache» на «Очистить все параметры». Затем я добавил «IF %ERRORLEVEL% neq 3 GOTO :start», а затем «GOTO :ClearCredentials». Это позволило мне сохранить меньше строк, чем заданная опция, и мне не нужно было перемещать свой код, чтобы передать его следующему процессу.

Это должно позволить несколько разных опций для будущих элементов.

@ECHO OFF
:start
ECHO 1. Clear IE, Chrome, Temp Cache
ECHO 2. Clear Credentials in IE, Chrome, and Windows
ECHO 3. Clear All Options
ECHO 4. Exit
CHOICE /N /C:12345 /T 15 /D 5 /M "Type the number to choose an option."
IF %ERRORLEVEL%==5 GOTO TIMEOUT
IF %ERRORLEVEL%==4 GOTO Exit
IF %ERRORLEVEL%==3 GOTO ClearAllOptions
IF %ERRORLEVEL%==2 GOTO ClearCredentials
IF %ERRORLEVEL%==1 GOTO ClearCache
GOTO :start

:ClearCache
ECHO Clearing Cache...
<code here>
pause
cls
IF %ERRORLEVEL% neq 3 GOTO :start
GOTO :ClearCredentials


REM ===-----------------------

:ClearCredentials
ECHO Clearing Credentials
<code here>
pause
cls
GOTO :start

REM ===-----------------------

:ClearAllOptions
ECHO Clearing All Options...
pause
cls
GOTO :ClearCache
pause

REM ===-----------------------

:Exit
ECHO Exiting...
<code here>
pause
EXIT

REM ===-----------------------

:TIMEOUT
cls
ECHO Exiting because no choices were made in 15 seconds
:END
timeout /t 5

person jsc    schedule 23.07.2018    source источник


Ответы (1)


Это очень простой способ сделать это:

@ECHO OFF
:start
set option=0

ECHO 1. Clear IE, Chrome, Temp Cache
ECHO 2. Clear Credentials in IE, Chrome, and Windows
ECHO 3. Clear All Options
ECHO 4. Exit
CHOICE /N /C:12345 /T 15 /D 5 /M "Type the number to choose an option."
GOTO Option-%ERRORLEVEL%

:Option-3 ClearAllOptions
ECHO Clearing All Options
set option=3

:Option-1 ClearCache
ECHO Clearing Cache...
<code here>
pause
cls
if %option% neq 3 GOTO :start

REM ===-----------------------

:Option-2 ClearCredentials
ECHO Clearing Credentials
<code here>
pause
cls
GOTO :start

REM ===-----------------------

:Option-4 Exit
ECHO Exiting...
<code here>
pause
EXIT

REM ===-----------------------

:Option-5 TIMEOUT
cls
ECHO Exiting because no choices were made in 15 seconds
:END
timeout /t 5
person Aacini    schedule 24.07.2018