0

我创建了一个嵌套 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%”=="" 回显我提供的消息后,我得到一个“(此时是意外的”。其他一切都按计划工作,但我不确定为什么会收到此消息。

4

3 回答 3

1

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

IF /i ==Y ( ECHO You entered YES

(因为 %ANS% 为空)

因此,您会得到一个“(此时是出乎意料的)。

要纠正这个问题,请写

IF /i "%ANS%"=="Y" ( ECHO You entered Yes
于 2014-03-19T17:33:53.820 回答
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        )
于 2014-03-20T12:49:00.010 回答
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
        )
于 2014-03-19T17:46:32.007 回答