Почему в моем командном файле всегда выполняется ветвь ELSE условия IF? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть файл с именем name-code.bat, который я использую в качестве имени пользователя и пароля для этого кода.Но пакетный файл всегда выдает, что этот файл отсутствует.

Я пытался переместить name-code.bat из папки с профилями и обратно, и все вокруг, но он все еще заканчивается командой else.

@echo off
color 0a
cls
goto login-menu

:badlogin
cls
echo error that is not an available option

:login-menu
echo please input a # then press enter
echo --------------------------------------
echo.
echo 1 - sign in
echo 2 - sign up
echo 3 - exit
echo.
set /p log1=:
if %log1%==1 goto login
if %log1%==2 goto sign up
if %log1%==3 exit
goto badlogin

:sign up
cls
echo --------SIGN UP--------
echo.
set /p username= Enter a username: 
set /p password= Enter a password: 
(
    @echo off
    echo username: %username%
    echo password: %password%
)   > c:\users\Blaine\Desktop\profiles\%username%-%password%.bat
cls
goto login-menu

:login
cls
echo --------SIGN IN-------
echo.
set /p username= Username: 
set /p password= Password: 
if exist users\Blaine\Desktop\profiles\%username%-%password% (
    echo %username%-%password%.bat has been found
) ELSE (
    echo %username%-%password%.bat is missing
)
pause

Я хочу, чтобы он вывел name-code.bat has been found, но это всегда приводит к выполнению ветви else с выводом name-code.bat is missing на консоль.

1 Ответ

0 голосов
/ 04 февраля 2019

Мы будем игнорировать огромную, блестящую дыру в безопасности , возникающую в результате ввода пар имени пользователя и пароля в имена файлов.Не делай этого.И оттуда мы также будем игнорировать явную дыру в безопасности хранения паролей в виде простого текста.Также не делайте этого.

Тем не менее, ваша проблема в том, что при создании файла вы использовали другое имя, чем при проверке на наличие файла.

Отсутствует C:\Возможно, это часть теста, поскольку у вас, вероятно, нет другого диска, на котором она может быть.Но нехорошо включать его в одну точку, а не включать в другую.

Большая проблема - забыть включить расширение .bat в тест.

Чтобы лучше справиться с этим, сразу же после получения информации вычислите нужное имя файла в переменной и используйте эту переменную во всех местах, где вы ссылаетесь на имя.

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