我创建了一个嵌套的if语句,只执行非常简单的任务。以下是代码:
@ECHO OFF
SET ANS=%1
IF "%ANS%"=="" ( ECHO You Entered Nothing
)
IF /i %ANS%==Y ( ECHO You entered Yes
)
IF /i %ANS%==N ( ECHO You entered NO
)
IF %ANS%==? ( ECHO I am confused
)
我的问题是当"%ANS%" ==""我得到了一个"(此时出乎意料"在回复了我提供的信息之后。其他一切都按计划运行但我不知道为什么我收到这条消息。
答案 0 :(得分:1)
错误消息来自您的第二个IF
。
如果%1为空,则您的第一个IF
会给您"您没有输入任何内容"如预期。
然后第二个IF
行转换为
IF /i ==Y ( ECHO You entered YES
(因为%ANS%为空)
因此你得到一个"(此时出乎意料)。
要纠正此问题,请写
IF /i "%ANS%"=="Y" ( ECHO You entered Yes
答案 1 :(得分:1)
这些元素可以保护其不受spaces
和duoble quotes
及&
个字符的影响。
@ECHO OFF
SET "ANS=%~1"
IF "%ANS%"=="" ( ECHO You Entered Nothing )
IF /i "%ANS%"=="Y" ( ECHO You entered Yes )
IF /i "%ANS%"=="N" ( ECHO You entered NO )
IF "%ANS%"=="?" ( ECHO I am confused )
答案 2 :(得分:0)
尝试这个......它完美无缺
@ECHO OFF
SET ANS="%1"
IF %ANS%=="" ( ECHO You Entered Nothing
)
IF /i %ANS%=="Y" ( ECHO You entered Yes
)
IF /i %ANS%=="N" ( ECHO You entered NO
)
IF %ANS%=="?" ( ECHO I am confused
)