2013-07-09 85 views
1

我目前正在使用批处理文件在Windows 7中进行游戏。所以,我有它问你问题的顺序,你在回答中键入:命令窗口关闭输入

:MainMenu 
set /p LMainMenu= 
if %LMainMenu%==1 goto PlayMenu 
if %LMainMenu%==2 goto ColourMenu 
if %LMainMenu%==3 goto Reset1 
if %LMainMenu%==4 goto AboutMenu 
goto MainMenu 

因此,如果有人不输入任何东西,并按下“Enter”键,在CMD窗口将关闭。我如何防止这种情况发生?我添加了'goto MainMenu',所以如果他们输入1,2,3,4以外的任何内容,他们将被收回。 很多将不胜感激。谢谢。

+0

你应该处理空字符串作为其中一个答案 –

+0

我尝试添加: 如果%LMainMenu%==转到MainMenu的 它仍然如果我按Enter键则关闭。 – user2507295

+0

这是空字符串的语法错误。用引号环绕数值:'IF“%LMainMenu%==”“GOTO MainMenu' – mojo

回答

2

试试这个

:MainMenu 
set /a LMainMenu=1 
set /p "LMainMenu=enter a number: " 

如需更多帮助,请参阅help set在命令提示符。

+0

噢,我明白了,谢谢,您帮了很多忙。 – user2507295

+0

@ user2507295请避免发表”谢谢“意见。在SO上是对upvote和/或[接受](http://meta.stackexchange.com/a/5235)的回答。 –

0

添加此应该工作。 如果“%LMainMenu%” ==“” goto语句的MainMenu

+0

这不可能工作。当用户刚刚按下[Enter]时变量保持未定义提示符,所以'%LMainMenu%'生成文字字符串“%LMainMenu%”。它没有扩展为空字符串。 –

1

如果你想有一个默认选择(自动,当用户只是按下了回车选择),使用该解决方案Endoro建议。如果要循环播放,直到用户进行有效选择,利用这个来代替:

:MainMenu 
set "LMainMenu=" 
set /p "LMainMenu=Enter a number [1-4]: " 
if not defined LMainMenu goto MainMenu 
if "%LMainMenu%"=="1" goto PlayMenu 
...