批处理IF语句总是返回false?

好的,我有这个:

:ask SET /p answer = Hello user. Do you want to use this program? (y/n) IF [/i] %answer% == y GOTO yes IF [/i] %answer% == n (GOTO no) ELSE (ECHO Your input was not accepted. Please try again. & GOTO ask) :yes ... ... :no pause 

问题是这两个if语句都返回false,并不断要求我的input。 我想这样做,如果答案不是y或n,用户必须重新input他们的答案。

任何帮助?

谢谢

删除等号左侧的空格,以避免用名称中的空格声明变量。 添加引号以避免某些字符出现问题(&<> |)

 SET /p "answer=Hello user. Do you want to use this program? (y/n)" 

IF命令中的忽略情况不包括[]。 另外,添加引号以避免空答案的问题。

 IF /i "%answer%"=="y" GOTO yes 

answer后删除空格:

 SET /p answer= Hello user. Do you want to use this program? (y/n) 

在您的原始代码中,您正在创建一个名为%answer %的变量,而不是%answer%

编辑删除IF条件中的矩形括号…

 :ask @echo off SET /p answer= Hello user. Do you want to use this program? (y/n) IF /i "%answer%" == "y" GOTO :yes IF /i "%answer%" == "n" ( GOTO :no ) ELSE ( ECHO Your input was not accepted. Please try again. GOTO :ask ) :yes rem :no rem pause