Мне интересно, есть ли хороший и чистый способ добавить «выбрать все варианты» при создании меню выбора в пакетном режиме.
В настоящее время у меня есть настройка выбора: очистить элемент 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