Мой пакетный скрипт не работает, я понятия не имею, почему

#windows #batch-file

#Windows #пакетный файл

Вопрос:

Я потратил последние часы на изучение пакетных сценариев и компиляцию своей собственной программы с использованием lua и batch. Один из моих пакетных файлов не работает должным образом, и я понятия не имею, почему. С тех пор я немного отредактировал сценарий, но не сделал ничего такого, что могло бы изменить то, как он работает.

Этот пакетный скрипт заставляет вас вводить пароль при его запуске. Когда я отвечу с правильным паролем, он скажет, что ДОСТУП РАЗРЕШЕН. И при неправильном вводе он должен указывать, ЧТО ДОСТУП ЗАПРЕЩЕН. Но вместо этого происходит то, что когда я ввожу неправильный пароль, он говорит, что ДОСТУП ПРЕДОСТАВЛЕН. Кажется, я не могу понять, почему это не работает.

 @echo off
color A
set password=YOUR PASSWORD HERE

:start
cls
echo Welcome!
echo Please input password:
set /p passwordinput=

if %passwordinput%==%password% (
cls
color 2
echo ACCESS GRANTED!
timeout /t -1
goto access
) else (
cls
color C
echo ACCESS DENIED
echo TRY AGAIN
timeout /t -1
cls
color a
goto start
)

:access
cls
pause
 

Ответ №1:

Вы всегда должны использовать кавычки в if string compares , иначе вы получите синтаксические ошибки, когда одна строка содержит пробелы.

 if "%passwordinput%" == "%password%" (
...
 

Комментарии:

1. … но, ‘C0mpu1er’, поскольку мы понятия не имеем, какие символы разрешены в пароле, вышеуказанное все равно может работать не так, как предполагалось. (Например, пароли, содержащие символ двойной кавычки).

2. @Compo Верно, но объяснение задержки расширения на данный момент, вероятно, ошеломило спрашивающего