在Windows批处理中,我询问用户是要使用该程序的内部默认值还是要设置自己的参数,但是无论用户设置了什么答案,该程序始终会直接跳转到主例程使用内部默认值。这是我的代码:
@echo off
setlocal EnableDelayedExpansion
choice /C:yn /M "Use internal defaults? "
if errorlevel==1 goto yes
if errorlevel==2 goto no
rem use default
:yes
set "MYNUMBER=5"
goto run
rem let user define another number
:no
set /P MYNUMBER="Please set a number: "
goto run
rem main routine
:run
echo %MYNUMBER%
pause
我想念什么?
由于我们正在这样做:我如何才能迫使程序在键入用户的选择后等待用户按下“ Enter”键?现在,它会在输入“ y”或“ n”后立即开始。
答案 0 :(得分:1)
感谢评论员,这对您有很大帮助!现在其工作方式如下:
@echo off
setlocal EnableDelayedExpansion
:ask
set /P USER_CHOICE="Use internal defaults? (Y/N) "
if /i "%USER_CHOICE%"=="y" (
goto yes
) else (
if /i "%USER_CHOICE%"=="n" (
goto no
) else (
echo "Wrong input! Please choose Y or N!"
goto ask
)
)
rem use default
:yes
set "MYNUMBER=5"
goto run
rem let user define another number
:no
set /P MYNUMBER="Please set a number: "
goto run
rem main routine
:run
echo %MYNUMBER%
pause