嵌套的IF语句,意外错误

时间:2014-03-19 17:08:53

标签: windows batch-file cmd nested-if

我创建了一个嵌套的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%" ==""我得到了一个"(此时出乎意料"在回复了我提供的信息之后。其他一切都按计划运行但我不知道为什么我收到这条消息。

3 个答案:

答案 0 :(得分:1)

错误消息来自您的第二个IF。 如果%1为空,则您的第一个IF会给您"您没有输入任何内容"如预期。 然后第二个IF行转换为

IF /i ==Y ( ECHO You entered YES

(因为%ANS%为空)

因此你得到一个"(此时出乎意料)。

要纠正此问题,请写

IF /i "%ANS%"=="Y" ( ECHO You entered Yes

答案 1 :(得分:1)

这些元素可以保护其不受spacesduoble 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
        )