Пакетный файл продолжает падать, когда пользователь вводит текст - PullRequest
0 голосов
/ 31 марта 2019

Я пытался заставить этот код работать ...

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

:ST
if exist password.txt goto login
if not exist password.txt goto signup
:login
set /p user=<username.txt
set /p pass=<password.txt
set /p answer=Username: 
if %answer% = %user% goto p1
if NOT %answer% = %user% goto errlog111
exit
:p1
set /p answer=Password: 
if %answer%=%pass% goto 
if NOT %answer% = %pass% goto errlog111
echo success
pause
exit
:signup
title Username needed for account creation! / Newex / Unregistered
set /p answer=Username: 
echo %answer% > username.txt
cls
set /p answer=Password: 
echo %answer% > password.txt
cls
echo Account created!
goto login
exit
:errorlog111
echo Username / Password incorrect!
pause
goto login

Итак, я хочу, чтобы он проверял содержимое password.txt (или username.txt) на предмет того, что пользователь вводит, и если пользователь вводит правильные данные, он переходит кследующая вещь.Однако, если они получат пароль или неправильное имя пользователя, тогда я хочу, чтобы он сказал: «Имя пользователя / пароль неверны!»но по какой-то причине, когда я ввожу имя пользователя, командный файл просто закрывается!Пожалуйста, помогите!

1 Ответ

0 голосов
/ 31 марта 2019
if %answer% = %user% goto p1

Правильный синтаксис - использовать == или EQU.

Лучший синтаксис:

if "%answer%" == "%user%" goto p1
  • кавычки защищают от некоторых недопустимых входных данных, а аргументы содержат определенные символы, такие как , ;, и рекомендуется для любого сравнения строк.

Обратите внимание, что if /i ... делает сравнение без учета регистра (для дальнейшего использования)

Также - ошибка, которую трудно увидеть

echo %answer% > username.txt

будет включать в файл пробел, следующий за значением answer

> username.txt echo %answer%

не будет включать это (предположительно) нежелательное пространство.

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