因此我在这里做了一些操作,其中会有一个数字列表,例如1-10,而您键入的任何一个(到目前为止只有1)都会向您显示信息(因此,如果我键入并输入1,它将转到key1 = key)。
但是,如果我键入1并单击Enter,它会向我显示我想要的Key1 =键,但是如果我按住Enter键,它将继续循环Key1 = Key脚本和首页,这可能是停止了吗?
@echo off
:T
cls
echo Home Page
echo [1] NameA
echo.
echo [e] Exit
set /p word=
if "%word%"=="1" goto aaa
if "%word%"=="e" goto eee
goto T
:aaa
cls
echo Key1 = Key
pause
goto T
:eee
exit
答案 0 :(得分:0)
set /p
保留最后一个值(如果只是按Enter键)。您应该将变量设置为空(或根据需要设置为默认值):
@echo off
:loop
REM set "word=" ; for "empty"
set "word=string"
set /p "word=Enter your choice (or just ENTER for '%word%': "
echo you choosed %word%
goto :loop
请允许我注意choice命令,这可能是(也可能不是)更好的选择。
答案 1 :(得分:0)
@echo off
setlocal
:T
cls
echo Home Page
echo [1] NameA
echo.
echo [e] Exit
rem Undefine variable word before input.
set "word="
set /p "word="
rem No input = word is not set a new value, thus not defined.
if not defined word goto eee
if "%word%"=="1" goto aaa
if "%word%"=="e" goto eee
goto T
:aaa
cls
echo Key1 = Key
pause
goto T
:eee
exit
如果仅在set /p
提示符下按 Enter ,则未设置变量word
(新值)。
如果在word
输入之前未定义set /p
,那么在输入之后将未定义,
如果您只按 Enter 。
setlocal
已添加,以将变量设置为当前脚本的局部变量
执行。