如何执行以下操作:如果不是%var1%==%var2%goto fail(Batch)



我正在做一个受密码保护的记事本样式的东西更新代码:

:login
cls
Echo Welcome %Name%
Echo Please enter your password
set/p %passin%=
if "%passin%" neq "%pass%" goto :menu
echo Correct password.
pause
goto :menu
:loginfail
echo incorrect password, you have (%loginfails%) attempts remaining
[INSERT SCRIPT FOR CHANGING THAT NUMBER AND SOME METHOD OF SECURITY WHEN IT HITS ZERO HERE]
pause
cls
goto :login

然而,在set/p之后,它会自动关闭,即使我输入了正确的密码,我在文件的早期设置了加载脚本。

如有任何协助,我们将不胜感激:(

编辑:输入密码后不再关闭,但无论它认为密码是正确的。我该怎么解决这个问题(当我打开echo时,它会说如果"=="转到:菜单(

编辑2:我用neq作为一个评论者说,相反的结果,仍然不起作用

您得到的错误(关闭,意外终止批处理文件(是因为您已经写入:

set /p %passin%=

这是完全错误的。您必须输入ONLY变量名(不带百分号(%...%((。

有一个你提供给我们的脚本的更正版本:

@echo off
set "pass=PASS_YOU_WANT"
set "loginfails=NUMBER_YOU_WANT"
set "name=NAME_YOU_WANT"
:login
cls
Echo Welcome %Name%
set /p "passin=Please enter your password: "
if /i NOT "%passin%"=="%pass%" ( goto loginfail ) else ( echo Correct password. )
pause
goto menu
:loginfail
set /a "loginfails-=1" >nul
echo incorrect password, you have (%loginfails%) attempts remaining
rem [INSERT SCRIPT FOR CHANGING THAT NUMBER AND SOME METHOD OF SECURITY WHEN IT HITS ZERO HERE]
pause
cls
goto login

其中CCD_ 3表示启用大小写敏感度。

希望这能有所帮助!

最新更新