我正在使用记事本++批量编写程序,这是我的代码:
if %line1%==1 (
echo PLEASE ENTER THE PASSWORD TO CONTINUE
set /p password="PASSWORD:"
IF %PASSWORD%==%LINE2% GOTO PASSSUCCESS
IF NOT %PASSWORD%==%LINE2% GOTO PASSERROR
)
if %line1%==0 goto main menu
当我在cmd中运行上面的代码时,我收到以下错误:
此时不期待GOTO
请帮助
答案 0 :(得分:0)
您正在一个块中设置和处理Password
变量,因此您需要启用延迟扩展。这应该解决它:
SETLOCAL EnableDelayedExpansion
if %line1%==1 (
echo PLEASE ENTER THE PASSWORD TO CONTINUE
set /p password="PASSWORD:"
REM Note how Password is in delayed expansion notation below.
IF !PASSWORD!==%LINE2% GOTO PASSSUCCESS
IF NOT !PASSWORD!==%LINE2% GOTO PASSERROR
)
if %line1%==0 goto mainmenu
至于"为什么"您收到此错误:如果您没有延迟扩展,则解析器在解析块时不知道Password
的值是什么,所以在执行时它看起来像这样:
echo PLEASE ENTER THE PASSWORD TO CONTINUE
set /p password="PASSWORD:"
IF ==<Line2Value> GOTO PASSSUCCESS
IF NOT ==<Line2Value> GOTO PASSERROR
请注意Password
应该为空的位置。这是因为在解析时不知道(再次在执行之前一次解析整个块)。通过启用延迟扩展,每行将基本上按顺序进行解析,以便在第二行中输入的值可用于块中的后续比较。