1

对此非常陌生,所以如果这很简单,我深表歉意。我在命令提示符中运行以下 .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.

脚本会提示“敲敲!” 应该的,但是在回答“谁在那里?”时 (不带引号),我收到错误“此时是意外的”。我究竟做错了什么?

再次,我意识到这可能是非常基本的,所以我很感激任何帮助。

谢谢。

4

1 回答 1

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)
于 2013-06-13T03:41:40.157 回答