Batch file 拼写错误不会转到错误

Batch file 拼写错误不会转到错误,batch-file,Batch File,在我的游戏中,如果我拼写错误,例如“go south”,它只会关闭批处理文件,而不会返回错误 :type set /p menu=type: if "%menu%" == "go north" goto north if "%menu%" == "go south" goto south if "%menu%" == "go east" goto east if "%menu%" == "go west" goto west if "%menu%" == "grab bandage" goto

在我的游戏中,如果我拼写错误,例如“go south”,它只会关闭批处理文件,而不会返回错误

:type
set /p menu=type:
if "%menu%" == "go north" goto north
if "%menu%" == "go south" goto south
if "%menu%" == "go east" goto east
if "%menu%" == "go west" goto west
if "%menu%" == "grab bandage" goto pick up
if "%menu%" == "use bandage" goto use
if "%menu%" == "inventory" goto inventory
if "%menu%" == "look around" goto look around
if "%menu%" == "open drawer" goto open drawer
if "%menu%" == "open tin can" goto open can
if "%menu%" == "take tin can" goto ttc
if "%menu%" == "take key" goto tk
if "%menu%" == "take money" goto take money
if "%menu%" == "throw can" goto throw
echo error
pause
cls
goto play

如果我拼写了不在列表中的错误,例如“dog”,它将显示错误。如果我像这样拼写gosouth,它将显示错误,但是如果我像这样拼写gosoutg,它将关闭游戏。有没有一种方法可以使拼写错误的单词(如“go soutg”)出错,而不必列出拼写错误的方法?

代码似乎很正常,您遇到的问题不是由拼写错误引起的,而是在某些情况下由goto语句引起的

CMD解释器使用空格作为参数的分隔符,因此不能使用
goto take money
,因为它实际上会解释为
goto take
,并将忽略
money
,这将导致代码指向不存在的标签

当然,使用建议的
IF/I
,这将帮助您忽略区分大小写的打字错误,尤其是当用户看不到选项列表时

如果用户/播放器将看到可能的列表,您也可以考虑使用<代码>选择<代码>命令,而不是<代码> SET/P<代码>,因为您可以定义准确的选择,用户将只使用单个键选择选项,并将变量<代码> %ErrRealSeal%%/Cuth>设置为特定值(基于所做的选择)然后,如果“%ERRORLEVEL%”eq“3”转到东部,您可以像这样进行比较

使用
choice
命令的好处是,只接受已定义的选项,而用户执行的任何其他未定义的选项只会使扬声器发出嘟嘟声。正因为如此,您不需要再次将脚本重定向回相同的提示“重画”内容,等等。。。但这只是一个建议


希望这有助于。。。Ricky

转到打开抽屉
将标记
打开
并忽略
抽屉
。除此之外,你的代码在这里工作得很好。问题是我需要找到一种方法,如果我拼写错误,它不会关闭游戏。我不想在批处理文件中键入所有拼写错误的单词。我尝试了你的代码。当我输入废话时,它会按预期工作(它会回显“错误”并暂停)。如果我输入一个期望的答案(当然,因为该代码段中没有定义标签),那么它就不起作用了。我得到一个“找不到标签”,批处理文件停止。我可以想象,您的一个标签不存在(或拼写错误),您可以使用
if/I…
忽略大写,然后
向南
向南
,向南`。。。都是匹配的。