批处理文件一直说goto是出乎意料的



每当我使用它时,它说goto是出乎意料的。为什么?我在这里浏览了许多回答的问题,看来我似乎无法正确解决问题。另外,无论我做什么输入,无论是否正确,它似乎都转到:不正确。请帮助。

@echo off
:password
set /p pw=Type password:
if %pw%=="fdDg*3&d@%jdgf" goto begin
if not %pw%=="fdDg*3&d@%jdgf" goto incorrect
:incorrect
echo Access denied.
goto password
:begin
echo Welcome!
pause
exit

您必须使用

@echo off
:password
set /p "pw=Type password: "
if "%pw%"=="fdDg*3&d@%%jdgf" goto begin
:incorrect
echo Access denied.
goto password
:begin
echo Welcome!
pause
exit

对于kayasax写的,需要围绕双引号的预定密码对案例敏感的比较。

百分位符号具有特殊含义,因为您在%pw%上使用特殊含义。因此,如斯蒂芬提到的那样,必须再将密码字符串中的百分比符号逃脱。并且确实不需要if not行。

但是,密码验证代码仍然需要更多代码来检查无效的输入,请参阅为什么可以使用我的批处理代码正确输入旧密码的用户可以设置新密码?

最新更新