我一直在编写一个批处理文件来模拟某种类型的游戏,但它在进入和提交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而没有输入任何内容,它将关闭。
答案 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