进入空间时批处理文件总是崩溃

时间:2013-12-10 13:17:38

标签: windows batch-file crash space

我一直在编写一个批处理文件来模拟某种类型的游戏,但它在进入和提交Space时总是崩溃(或简单地关闭)或者根本就没有。我怎样才能解决这个问题呢?例如:

set /p option=Option: 

然后我会:

Option: 

我需要输入一些内容,但在这种情况下,如果我按Enter键而不输入任何内容(或空格),它将自行关闭。

===编辑===

此处的完整代码:

@echo off
cd Desktop
md TestFolder
goto main

:main
cls
title Test
echo.
echo Enter your name below
echo.
set /p name=Name:
if %name% == %name% set name=%name% & goto finish

:finish
echo.
echo Thank you for entering your name.
echo Press any key to close the window.
pause >nul
exit

问题在于“set / p name =”,因为当批次提示您输入您的名字时(“名称:”部分),如果您点击Enter而没有输入任何内容,它将关闭。

3 个答案:

答案 0 :(得分:3)

这是造成麻烦的一条线:

if %name% == %name% set name=%name% & goto finish

如果您只是点击set /p name=Name:处的输入,%name%将为空。 所以上面的行将执行:

if == set name= & goto finish

当然,这永远不会奏效 要使语法正确,请使用:

if "%name%" == "%name%" set name=%name% & goto finish

好的,这是语法部分。 但是你尝试做什么?如果a等于a,那么make a = a ??

答案 1 :(得分:2)

你几乎没有让我们继续下去,但我会做出有根据的猜测。如果通过双击文件(或快捷方式),从桌面或Windows资源管理器运行该文件,则当程序到达终点时,控制台将自动关闭。结束点可能是由于您的代码逻辑,或者可能是由于致命的语法错误。它将在您有机会阅读任何已打印的消息之前关闭。

解决方案是改变游戏运行方式,尤其是在开发过程中。直接运行控制台,转到“开始” - >“所有程序” - >“附件”,然后选择 cmd.exe 。使用CD导航到游戏所在的文件夹,然后输入要运行它的批处理文件的名称。现在,当游戏结束时控制台将保持打开状态,您将能够更轻松地查看所有消息和调试。

答案 2 :(得分:1)

也许这就是你所追求的目标。

IF NOT DEFINED name GOTO main检查用户是否只按了Enter键而没有输入任何内容,如果是,则返回:main标签并再次提示用户输入名称。

IF "%name%"==" " GOTO main检查用户是否刚输入了1 space个字符,如果是,则会返回:main标签以再次提示用户。

:main
cls
title Test
echo.
echo Enter your name below
echo.
set /p name=Name:
IF NOT DEFINED name GOTO main
IF "%name%"==" " GOTO main

:finish
echo.
echo Thank you for entering your name.
echo Press any key to close the window.
pause >nul
exit