设置 /p 空答案崩溃

Posted

技术标签:

【中文标题】设置 /p 空答案崩溃【英文标题】:set /p empty answer crash 【发布时间】:2015-02-13 21:20:08 【问题描述】:

我是新来的,所以我会尽力做到最好。

所以我正在尝试制作基于基于文本的 MS-DOS 的 RPG,并且我做得很好,因为我刚刚看到如果用户在 set /p 处输入无效输入,例如空答案(只需按下输入)或不在“IF”上的答案,批处理就会崩溃,我想修复它,这样它就不会那么崩溃了。

这是我要修复的部分之一:

@echo off
title "Wasteland Adventure"
color 0A
cls
:Menu
cls
echo.
echo.
echo Welcome to Wasteland Adventure
echo.
echo To start a new game, type NEW and press ENTER.
echo To see instructions for the game, type INSTRUCTIONS and press ENTER.
echo To quit, type QUIT and press ENTER.
set input=
set /p input=What do you want to do? 
if %input%==new goto INTRO
if %input%==instructions goto INSTRUCTIONS
if %input%==quit goto EXIT

提前致谢

【问题讨论】:

What is the proper way to test if variable is empty in a batch file, If NOT "%1" == "" GOTO SomeLabel, fails if %1 has quotes的可能重复 也许helpinstructions 更好——更短更熟悉。 【参考方案1】:

崩溃的不是set /p,而是:

if %input%==new 

如果 %input% 为空,则解析为:

if ==new 

显然是语法错误。为避免这种情况,请使用:

if "%input%"=="new"

一个空的输入会被解析为:

if ""=="new"

效果很好。

当变量只包含空格和/或制表符时同样适用:

if == new(语法错误)与if " " == "new"(运行良好)

完整代码如下:

:Menu
set input=
set /p input=What do you want to do? 
if "%input%"=="new" goto INTRO
if "%input%"=="instructions" goto INSTRUCTIONS
if "%input%"=="quit" goto EXIT
REM for any other (invalid) input:
goto :Menu

【讨论】:

但是我想做的事情是,当我不小心把不在选项中的东西(也就是“IF”)放入它不会崩溃时,它只会返回到 :Menu 并让它再次输入信息。不过谢谢 因为那些树而看不到森林?查看我的编辑。

以上是关于设置 /p 空答案崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用带有空 NavigateUri 的 HyperlinkBut​​ton 时崩溃

Android-三星手机利用ImageLoader加载系统图片的时候,提示空指针导致崩溃

Android-三星手机利用ImageLoader加载系统图片的时候,提示空指针导致崩溃

为什么设置Google Chrome配置文件时硒会崩溃? [重复]

加载空笔尖导致应用商店评论崩溃

Android-空指针异常反复崩溃