Возможно, вам придется использовать CHOICE
, потому что SET /P
будет читать ввод пользователя, пока вы не введете новую строку.
CHOICE
имеет параметр /T
, который может сообщить вам, что через n секунд будет выбран вариант по умолчанию (используйте /D <default key>
, чтобы установить выбор по умолчанию). Например, choice /c 123y /t 1 /d y
будет ожидать ввода в течение 1 секунды и будет выбирать только последний вариант (который равен y
), если пользователь ничего не нажимает в течение 1 секунды. Вы также можете отобразить сообщение с приглашением, добавив /M "<message>"
, поэтому ваша полная команда:
choice /c 123y /t 1 /d y /m "what to do:"
%ERRORLEVEL%
где команда CHOICE
выдает результат. Он начинается с 1 до последнего индекса символа (в этом случае y
будет 4
):
if "%errorlevel%"=="1" goto c1
if "%errorlevel%"=="2" goto c2
if "%errorlevel%"=="3" goto c3
rem The last one, which is 4, but because it's the only last option, so you don't need another if statement
И в конце цикла вы можете добавить деньги:
rem Instead of "set /a money=%money% + 10", why you don't use += instead?
set /a money+=10
goto theBeginOfTheLoop
Объедините эти операторы вместе, у нас будет простой цикл goto
:
:theBeginOfTheLoop
echo money: %money%
echo choice 1 [1]
echo choice 2 [2]
echo choice 3 [3]
choice /c 123y /t 1 /d y /m "what to do: "
if "%errorlevel%"=="1" goto c1
if "%errorlevel%"=="2" goto c2
if "%errorlevel%"=="3" goto c3
set /a money+=10
goto theBeginOfTheLoop
Хорошего дня с партией:)