Windows Shell脚本“此时出乎意料。”在命令提示符中

时间:2013-06-13 03:16:30

标签: batch-file command-prompt windows-scripting

对此非常新,所以如果这很简单,我道歉。我在命令提示符下运行以下.bat脚本以进行分配。

@ECHO off

TITLE "KnockKnock.bat - The KnockKnock joke game!"

COLOR 0E

CLS

ECHO.
ECHO.   
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

SET /p reply="Knock Knock!    C:>"

CLS

IF NOT %reply% == "Who is there?" (
  ECHO "Sorry, but you are not playing the game right!"
  GOTO :EOF)

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

SET /p reply="Orange!         C:>"

CLS

IF NOT %reply% == "Orange who?" (
  ECHO "Sorry, but you are not playing the game right!"
  GOTO :EOF)

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

ECHO "Orange you glad you've written your first Windows shell script?"

ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.
ECHO.

脚本会提示“Knock Knock!”应该如此,但在回答“谁在那里?” (没有引号),我收到错误“此时此刻意外”。我做错了什么?

同样,我意识到这可能非常基本,所以我感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

问题是当%reply%变量被其值替换时,cmd会尝试解释这个:

IF NOT Who is there? == "Who is there?" (

而不是:

IF NOT "Who is there?" == "Who is there?" (

要解决此问题,请在%reply%周围添加引号,如下所示:

IF NOT "%reply%" == "Who is there?" (
  ECHO "Sorry, but you are not playing the game right!"
  GOTO :EOF)