Да, это полностью выполнимо, вам просто нужно создать свой список.
Теперь, когда вы сказали, что понимаете, что выбор допускает только символы 0-9, AZ az и ASCII от 128 до 254, верно?
То есть вам нужно использовать список символов, чтобы создать выбор, и просто выбрать желаемое количество вариантов.
вот список используемых символовс выбором:
0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ç ü é â ä à å ç ê ë è ï î ì Ä Å É æ Æ ô ö ò û ù ÿ Ö Ü ¢ £ ¥ ₧ ƒ á í ó ú ñ Ñ ª º ¿ ⌐ ¬ ½ ¼ ¡ « » ░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ α ß Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■
Теперь, чтобы использовать те, у вас, конечно, не должно быть пробелов, но для выбора персонажей они вам понадобятся.
Вот пример сценария, который выполнил вашу цель:
@(SETLOCAL EnableDelayedExpansion
ECHO OFF
set "_ChoiceList=Bob,Adam,Steve,Alex,Durand,Killian,Hello,There,Now,Is,Going,Past"
REM Full Character List to populate Choices
SET "_CharList=0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ç ü é â ä à å ç ê ë è ï î ì Ä Å É æ Æ ô ö ò û ù ÿ Ö Ü ¢ £ ¥ ₧ ƒ á í ó ú ñ Ñ ª º ¿ ⌐ ¬ ½ ¼ ¡ « » ░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ α ß Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩ ≡ ± ≥ ≤ ⌠ ⌡ ÷ ≈ ° ∙ · √ ⁿ ² ■"
)
CALL :Main
( ENDLOCAL
EXIT /B 0
)
:Main
REM Now we can Do Our Choices btu lets do it in a Sub Function.
CALL :MakeChoice _ChoiceResult
ECHO.
ECHO The Index Chosen Was: %_Chosen%
ECHO The Result Matched is: %_ChoiceResult%
GOTO :EOF
:MakeChoice
cls
color 1A
SET %~1="
SET "_Choices="
SET "_Chosen="
SET "_Amount="
SET "_Choice#="
echo. Pick a Name:
echo.========================
REM Create Numbered Array of Choices and output Choices to the Screen
FOR %%A IN (!_ChoiceList!) DO (
SET /A "_Amount+=1"
REM ECHO !_Amount!
REM ECHO.SET "_Choice.!_Amount!.Value=%%A"
SET "_Choice.!_Amount!.Value=%%A" )
ECHO.
REM Create Choice List to Display only the choices needed.
FOR %%A IN (%_CharList%) DO (
SET /A "_Temp+=1"
IF !_Temp! LEQ !_Amount! (
SET "_Choices=!_Choices!%%A"
CALL ECHO. %%A : %%_Choice.!_Temp!.Value%%
)
)
ECHO.
CHOICE /CS /C !_Choices! /N /M "What name do you want to choose? "
SET "_Chosen=%ERRORLEVEL%"
REM Set Return Variable Value:
SET "%~1=!_Choice.%_Chosen%.Value!"
GOTO :EOF
В вышеприведенном скрипте мы создали функцию общего выбора, и мы передаем ей значение, которое хотим использовать для возврата значенияВыбранный выбор в.
В функции выбора мы анализируем список вариантов (который также мог бы быть отправлен как указатель на список вариантов выбора), а затем подсчитываем их, повторяя номер выбора и.. упс, я понимаю, что я использовал метод Числовой выбор только из-за того, что SET /A
- это изящный трюк, но он не работает для буквенных вариантов выбора, и при этом он не покажет начальный выбор 0 в начале. исправьте это.
, но в любом случае мы создаем переменные для выборов и связываем их с числовым значением (которое в любом случае является всем, что возвращается по выбору), поэтому мы затем выбираем правильное значение индекса.
Мы позволяем пользователю сделать выбор, а затем используем его для заполнения возвращаемой переменной значением результата, у нас также будет возвращено исходное значение выбора, поскольку мы сохранили его в _Chosen
, так что если вы хотите работатьот фактического значения, которое вы можете.
Однако вы также можете создать список действий для запуска, который также будет заполнен, используя аналогичный метод для создания списка вариантов выбора, а затем просто сопоставить действие, как оно будетсохраните в переменной так же, как мы соответствуем значению.
Хорошо, вы должны правильно отобразить lishсейчас.
Хорошо, я понял, что мне нужно добавить это, чтобы быть вызовом, и у меня были некоторые ошибочно названные переменные, бла-бла-бла.
Long Story Short Я исправил как Above, и у меня было время проверитьубедитесь, что он работает как ожидалось.
Вот пример Результаты:
Pick a Name:
========================
0 : Bob
1 : Adam
2 : Steve
3 : Alex
4 : Durand
5 : Killian
6 : Hello
7 : There
8 : Now
9 : Is
A : Going
B : Past
What name do you want to choose? 7
The Index Chosen Was: 8
The Result Matched is: There