批处理文件一直说goto是意外的

时间:2015-05-13 04:24:11

标签: batch-file

每当我使用它时,它表示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

1 个答案:

答案 0 :(得分:0)

你必须使用

@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%上的特殊含义。因此,密码字符串中的百分号必须使用提及Stephan的一个百分号进行转义。并且实际上不需要if not行。

但是,密码验证码仍需要更多代码才能检查无效输入,请参阅Why can a user set a new password without the need to enter old password correct with my batch code?上的答案