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

Batch file 如何执行以下操作:如果不是%var1%==%var2%goto fail(批处理),batch-file,Batch File,我正在做一个密码保护的记事本样式的东西 更新代码: :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%) attemp

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

: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
但是,在
设置/p
之后,它会自动关闭,即使我输入了正确的密码,我在文件的前面设置了加载脚本

如有任何帮助,将不胜感激:)

编辑:它不再在输入密码后关闭,但不管它认为密码是正确的。我如何解决这个问题(当我打开echo时,它会显示if”“==”“转到:菜单 (

EDIT2:我使用neq作为评论员说,相反的结果仍然不起作用

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

set/p%passin%=
这是完全错误的。您必须只输入变量名(不带百分号(
%…%
))

拥有您提供给我们的脚本的更正版本:

@echo关闭
设置“通过=通过你想要的”
设置“loginfails=您想要的号码”
设置“name=name\u您想要的”
:登入
cls
回显欢迎%Name%
设置/p“passin=请输入您的密码:”
如果/i不是“%passin%”==“pass%”(转到登录邮件),则返回正确的密码。)
暂停
转到菜单
:loginfail
设置/a“登录失败-=1”>nul
回显不正确的密码,您还有(%loginfails%)次尝试
rem[插入用于更改该数字的脚本,以及当该数字达到零时的某种安全方法]
暂停
cls
转到登录
其中
if/I
表示启用区分大小写


希望这能有所帮助!

我祝贺您提供了一个最小的示例;但是,在这样做的过程中,由于您对
Set/p
If
的错误使用,您的代码可能还有其他一些问题。您对
If
的使用应该使用双引号,
If Not“%passin%”==“pass%”…
。现在它不关心密码是什么,只是继续编写脚本除了其他注释,您的逻辑失败,如果“%passin%”neq“%pass%”,则更改为
goto:loginfail
我将其更改为neq,新代码似乎认为每个密码都是错误的如果这是你的新代码,那么@Mofi在他们的第二条评论中提供的建议发生了什么?因为,正如我之前暗示的,除非%passin%的值是passin,否则这是你的问题。