意外的标签,不明白为什么

时间:2013-12-16 21:14:44

标签: batch-file

需要一些关于我的代码的帮助,当它运行时,它会很快给出错误消息,然后关闭。错误是“Unexpected SetPassword1”。当您看到代码时,您将了解SetPassword1是什么。

:SetPassword
cls
echo This is where you can set your password or change it.
if EXIST pass.txt (
for /f "Delibs=" %%a in (pass.txt) do (
set OldPass=%%a
set /p OldPassCheck=What was your old password: 
if %OldPassCheck%==%OldPass% goto SetPassword1
echo That's not your old password.
pause
goto MainLogin
)
)
echo.
pause
goto SetPassword1

如果我的代码太愚蠢而无法理解,这基本上就是我想要的; 如果已有密码则设置新密码,如果没有密码则设置新密码。 所以我希望它检查pass.txt(包含密码)是否存在,如果存在,则从中获取密码。然后它被设置为OldPass。然后它询问用户旧密码是什么,如果它是正确的,那么它将转到SetPassword1(您将设置新密码),如果不是,它将返回主菜单。当然,如果pass.txt不存在,它将不会执行If中的命令并直接转到SetPassword1。

希望这不是太混乱!任何帮助将不胜感激! :)

PS。我知道将密码存储在一个简单的文本文档中是不安全的,但这只是一个测试应用程序,而不是实际上可以保护任何内容的东西。

PS2。 SetPassword1标签确实存在,我只是没有在这里包含它。抱歉! :P

1 个答案:

答案 0 :(得分:1)

您的goto找不到标签Setpassword1。将goto更改为SetPassword或更改您的第一个标签以匹配标识符:SetPassword1,或稍后在代码中创建适当的标签。

修改

您需要启用延迟扩展才能在oldpass代码中适当更新FOR变量。

  setlocal enabledelayedexpansion
  ....

  if !OldPassCheck!==!OldPass! goto SetPassword1