Как сделать что-то вроде: Если нет% var1% ==% var2%, goto fail (Batch) - PullRequest
0 голосов
/ 03 ноября 2018

Я работаю над паролем в стиле блокнота ОБНОВЛЕННЫЙ КОД:

: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 он автоматически закрывается, даже если я ввожу правильный пароль, который я ранее установил в файле для скрипта загрузки.

Любая помощь будет оценена:)

РЕДАКТИРОВАТЬ: он больше не закрывается после ввода пароля, но независимо от того, что он считает пароль правильным. Как я могу это исправить (когда у меня есть эхо, он говорит, если "" == "" Перейти к: меню (

EDIT2: я использовал neq, как говорит комментатор, противоположные результаты, все еще не работает

1 Ответ

0 голосов
/ 29 ноября 2018

Вы получаете ошибку (закрытие, неожиданное завершение пакетного файла), потому что вы написали:

set /p %passin%=

что совершенно неправильно. Вы должны были ввести ТОЛЬКО имя переменной (без знака процента (%...%)).

Получите исправленную версию скрипта, которую вы нам предоставили:

@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

, где if /I означает включение чувствительности к регистру.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...