Windows 检查批处理文件中的空白用户输入(无输入)

Windows 检查批处理文件中的空白用户输入(无输入),windows,batch-file,cmd,scripting,Windows,Batch File,Cmd,Scripting,因此,我要求用户进行选择。这个问题的重点是,如果用户没有任何输入就点击了刚才输入的。我的计划是找出用户是否什么也没有输入,只是点击了enter。如果是,则显示该选项无效,并返回到:START。以下代码不起作用-尤其是空输入和仅带空格的输入。如果用户做了这个无效的事情,那么我只想显示消息说它是空的。 如能就如何处理这一问题提出任何建议,将不胜感激 @echo off :START cls echo Choose your option & echo. echo [P] play

因此,我要求用户进行选择。这个问题的重点是,如果用户没有任何输入就点击了刚才输入的。我的计划是找出用户是否什么也没有输入,只是点击了enter。如果是,则显示该选项无效,并返回到
:START
。以下代码不起作用-尤其是空输入和仅带
空格的输入。如果用户做了这个无效的事情,那么我只想显示消息说它是空的。
如能就如何处理这一问题提出任何建议,将不胜感激

@echo off

:START
cls
echo  Choose your option & echo.
echo     [P] play
echo     [R] rules
echo     [M] main menu
echo     [E] exit
set /p "cho=->"
if %cho%==e (goto EXIT
) else if /I %cho%==m (goto MAINMENU
) else if /I %cho%==r (goto GAMERULES
) else if /I %cho%==p (goto GAMERULES
) else if %cho%=="" (goto EMPTYINPUT
) else if %cho%==" " (goto EMPTYINPUT
) else cls
echo That is not valid
pause

:EMPTYINPUT
echo  This is not a valid option.
pause
goto START

如果使用
choice
而不是
set/p
,则可以避免所有选项识别问题。Choice命令将只响应您定义的有限的一组键,所以它的答案总是正确的


有关详细信息,请键入:
choice/?

您也可以使用如下动态菜单进行尝试:

@echo off
Mode con cols=90 lines=15
:menuLOOP
Mode con cols=70 lines=15
Cls & color 0B
Title  Example of Dynamic Menu
echo(
echo(       ============================Menu===========================
echo(
for /f "tokens=2* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do echo(              %%A  %%B
echo(
echo(       ============================================================
set choice=
echo( & set /p choice=Make a choice or hit ENTER to quit: || GOTO :EOF
echo( & call :menu_[%choice%]
GOTO:menuLOOP

:menu_[P] PLAY
cls & Color 0A
echo.
echo In play
pause
GOTO:menuLOOP

:menu_[G] GAMERULES
cls & Color 0C
echo.
echo In game rules
pause
GOTO:menuLOOP

:menu_[M]  MAINMENU
cls & Color 0D
echo.
echo In main menu
pause
GOTO:menuLOOP

:menu_[E]  EXIT
echo Bye...
Exit

或者请注意,如果出于某种原因,您仍在使用XP,
choice
必须作为资源工具包的一部分下载。
@echo off
Mode con cols=90 lines=15
:menuLOOP
Mode con cols=70 lines=15
Cls & color 0B
Title  Example of Dynamic Menu
echo(
echo(       ============================Menu===========================
echo(
for /f "tokens=2* delims=_ " %%A in ('"findstr /b /c:":menu_" "%~f0""') do echo(              %%A  %%B
echo(
echo(       ============================================================
set choice=
echo( & set /p choice=Make a choice or hit ENTER to quit: || GOTO :EOF
echo( & call :menu_[%choice%]
GOTO:menuLOOP

:menu_[P] PLAY
cls & Color 0A
echo.
echo In play
pause
GOTO:menuLOOP

:menu_[G] GAMERULES
cls & Color 0C
echo.
echo In game rules
pause
GOTO:menuLOOP

:menu_[M]  MAINMENU
cls & Color 0D
echo.
echo In main menu
pause
GOTO:menuLOOP

:menu_[E]  EXIT
echo Bye...
Exit