Batch file 批处理如果语句不';好像不行

Batch file 批处理如果语句不';好像不行,batch-file,Batch File,我很困惑,感谢所有的帮助。。。 我正在做一个小游戏,下面是代码: @echo off :menu echo Welcome To My Game!!! echo Play & echo.Exit :: add more menu items above set /p menInp= if /i %menInp%==play goto initFile if /i %menInp$==exit EXIT :initFile cls if NOT exist \MyAdventu

我很困惑,感谢所有的帮助。。。 我正在做一个小游戏,下面是代码:

@echo off

:menu
echo Welcome To My Game!!!
echo Play & echo.Exit 
:: add more menu items above

set /p menInp= 

if /i %menInp%==play goto initFile
if /i %menInp$==exit EXIT

:initFile
cls
if NOT exist \MyAdventureGame\AdventureGameSave.txt\ GOTO newGame
if exist \MyAdventureGame\AdventureGameSave.txt\ GOTO Load

:newGame
echo. 2>AdventureGameSave.txt
set Gold = 50
set Xp = 0
set Level = 1
GOTO Save

:Save
echo %Gold% >>AdventureGameSave.txt
echo %Xp% >>AdventureGameSave.txt
echo %Level% >>AdventureGameSave.txt
GOTO Town

:Load
:: add Load functionallity here
GOTO Town

:Town
echo Welcome to town!!!
PAUSE
现在回答我的问题。。。 当我运行它时,无论我为我的MENIP键入什么,我的程序都会转到下一行:initFile,它几乎就像我的if语句一样

(if /i %menInp%==play goto initFile
if /i %menInp$==exit EXIT)
他们被忽视了

if /i %menInp$==exit EXIT
应该是

如果/i%MENIP%==退出

或者最好

如果/i“%menInp%”等于“退出”退出


因为您无法预测用户的输入,并且它可能包含空格。
使字符串成为单个标记。

这是一个注释,但可能会阻止进一步的问题

游戏生成提示:

如果您保留一个字符作为要保存的变量的前缀(例如,我要保存/重新加载的所有变量从
#
开始),则保存游戏所需的全部内容是

set #>"mygamefile.txt"
for /f "usebackqdelims=" %%a in ("mygamefile.txt") do set "%%a"
你只需要重新加载一个游戏

set #>"mygamefile.txt"
for /f "usebackqdelims=" %%a in ("mygamefile.txt") do set "%%a"
要清除所有
变量(在重新加载游戏之前很有用),请使用


哦,您可以考虑从代码中删除终端<代码> \/C> >如果存在语句(也将引号中的整个文件名括起来,以允许名称包含空格(并且遵循好的做法,不管您是否需要为文件名中的空格提供空间))

批处理对
SET
语句中的空格敏感。
SET FLAG=N
将名为“FLAGSpace”的变量设置为“SpaceN”值。语法
SET“var=value”
(其中值可能为空)用于确保分配的值中不包含任何多余的尾随空格。