Мне было интересно, можно ли распечатать список, а затем позволить пользователю выбрать любое имя в этом списке для просмотра, вот код:
@echo off
setlocal enabledelayedexpansion
set maxList=5
::creating variables for different names.
::Filip
set FilipTitle=1
set FilipAge=22
set FilipWeight=80
::Ada
set AdaTitle=0
set AdaAge=20
set AdaWeight=42
::Bob
set BobTitle=1
set BobAge=38
set BobWeight=73
set "names=Filip,Ada,Bob"
::pritning the list of names
:start
echo Which name would you like to see?
for /l %%i in (1; 1; %maxList%) do call :sub %%i
goto check
:sub
for /f "tokens=%1 delims=," %%a in ("%names%") do (
echo %%i. %%a
)
goto :eof
::asking user which name they want to view
:check
set /p nameCheck=
goto %nameCheck%
::printing the stats for the name mentioned
:Filip
echo Age: %FilipAge%
echo Weight: %FilipWeight%
pause
goto start
:Ada
echo Age: %AdaAge%
echo Weight: %AdaWeight%
pause
goto start
:Bob
echo Age: %BobAge%
echo Weight: %BobWeight%
pause
goto start
Приведенный выше код печатает список, но только позволяет просматривать имя, набрав имя, есть ли способ, позволяющий пользователю вводить число, соответствующее имени в списке - так 1. будет Филипп, 2. Ада и так далее? Таким образом, вместо ввода имени они могут ввести «1», а затем распечатать 1-е имя в списке.
Код выбора команды:
:start
for /l %%i in (1; 1; %maxList%) do call :sub %%i
goto check
:sub
for /f "tokens=%1 delims=," %%a in ("%names%") do (
echo %%i. %%a
)
goto :eof
:check
choice /c 123 /n /m "Which name do you want to view?"
if errorlevel 3 (
goto filip
)
if errorlevel 2 (
goto ada
)
if errorlevel 1 (
goto bob
)