Batch file Windows外壳脚本";在这个时候是出人意料的。”;在命令提示符中

Batch file Windows外壳脚本";在这个时候是出人意料的。”;在命令提示符中,batch-file,command-prompt,windows-scripting,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 %rep

这是一个非常新的问题,如果这是一个简单的问题,我很抱歉。我正在命令提示符下运行以下.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!”,但在响应“Who is there?”(不带引号)时,我会看到错误“is was unexpected at this time”。我做错了什么

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


谢谢。

问题在于,当用变量值替换
%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)

@用户2480659您需要测试“谁在那里?”和“谁在那里?”以适应糟糕的英语。使用
IF/i NOT…
语法使其不区分大小写。非常感谢Blorgbeard。这解决了我的问题。我知道这个问题很老,但我正在尝试相同的脚本,在这个答案中进行修复,当我键入
谁在那里?
不带双引号时,我不会得到
回音
显示。不知道为什么对Jerry有效,但我没有收到错误信息。有什么建议吗?如果没有,那就是
,所以除了
谁在那里?
之外,你应该获得每个输入的
回音。这就是你的意思吗?无论如何,我建议你发一个新问题——你会得到更多的人,而不仅仅是我在看这个问题。