2016-05-17 2 views
1

Sorry für den großen Essay ich versuche nur, um Details zu geben, wie dies funktionieren soll.Batch-Login-Code

Ich habe an einem Login-Code gearbeitet und ich habe es so gemacht, wenn Sie das .bat ausführen, fragt es, ob Sie sich registrieren oder einloggen wollen. Die Registrierung funktioniert einwandfrei. Es erstellt eine Textdatei mit dem Namen des Benutzers. Wenn Sie also den Benutzernamen "User1" eingeben, wird eine neue Textdatei namens "User1.txt" erstellt. Danach werden Sie aufgefordert, ein Passwort zweimal einzugeben, um sicherzustellen, dass Sie es richtig eingeben. Sobald Sie das Kennwort in beiden Zeiten geben wird es das Passwort innerhalb der „User1.txt“ Datei speichern, so dass jetzt ein Passwort haben innerhalb von „User1.txt“

:Register 
set /p User=Enter A Username: %=% 

IF EXIST %User%.txt (

call :colorEcho c %User% 
call :colorEcho c " Already Exists." 
echo. 
call :colorEcho c "Please Choose A Different Username." 
echo. 

goto Register 
) ELSE (
set /p Pass=Enter A Password: %=% 
set /p RePass=Re-Enter Password: %=% 
) 

if %RePass%==%Pass% goto RegFinal 
if not %RePass%==%Pass%(
call :colorEcho C "Passwords Do Not Match" 
echo. 
goto Register 
) 

:RegFinal 
echo %Pass%>%User%.txt 
echo Welcome %User% 
pause 
exit 

Das Problem im mit ist mit dem Login . Ich habe 2 Benutzer mit der Registerfunktion von oben erstellt. Benutzername-r1 Passwort-p1 und Benutzername-r2 Passwort-p2. Wenn ich mich anmelde, werden Sie nach Ihrem Benutzer und Passwort gefragt. Ich gebe r1 und p1 ein und es geht zum falschen Login-Bildschirm. Ich tippe r1 und p1 erneut und es zeigt den Begrüßungsbildschirm. Auch wenn ich r1 und p1 darin eintippe, springt es zurück zu: login, weil es denkt, dass es der falsche Benutzer/Passwort ist. aber wenn ich an den Eingang gehen, um den Benutzer und das Passwort wieder kann ich entweder Verwendung r2 und p1 oder r2 und lassen Sie das Kennwort leer, und es wird mir in r2 mit p1 lassen und sogar ein leeres Passwort

:Login 
set /p User=Enter Your Username: %=% 

IF EXIST %User%.txt (
set /p Pass=Enter Your Password: %=% 

>nul findstr /c:%Pass% %User%.txt && (
echo Welcome %User% 
) || (
echo Incorrect Username or Password 
goto Login 
) 

) ELSE (
call :colorEcho c %User% 
call :colorEcho c " Does Not Exists." 
echo. 
goto Choice 
) 

Antwort

1

Sie sehen, Die Antwort ist einfach. Sie sollten: A: Verwenden Sie keinen Aufruf, außer Sie haben eine Datei mit zusätzlichen Daten gespeichert, die aufgerufen werden müssen, B: loswerden der% =%, wie der Befehl set/p ermöglicht es Ihnen, Ihre Wahl eingeben und senden, ohne extra zu verwenden Unterbefehle, C: Versuch ein Menü hinzuzufügen, bevor du dich einloggst, das sollte so sein: (wo du etwas tippen musst, bevor es: echo Bitte gib einen [user/pass] ein, auch das Login-Bit das ich hinzugefügt habe edit wenn nicht% username% == * gehe zu LOGINERROR und wenn nicht% password% == * gehe zu LOGINERROR indem du hinzufügst, was du willst, dass dein Benutzername/Passwort der Ort ist, an dem * steht Feature Ihres Codes, so dass Sie sich fehlerfrei einloggen können, und Ihre Registrierungsfunktion als eine Möglichkeit für andere Leute, die diesen Code verwenden, einen Account temporär zu erstellen, ohne dass Sie Ihren Account verwenden müssen. Fühlen Sie sich frei, diesen Code zu bearbeiten nach Belieben und umverteilen Sie es wie Sie wollen, da es keine Code-Bugs geben sollte Eröffnen Sie und jeder, der dies sieht, lernt etwas Neues über Batch-Programmierung, da ich stundenlang gebraucht habe, um meinen Code auf dieser Seite dahin zu bringen, wo er kopiert/eingefügt werden kann. Genießen Sie!)

@echo off 
cls 
:loop 
cls 
:menu 
echo Greetings, what will you do? 
echo. 
echo 1.) Login 
echo 2.) Register 
echo 3.) Exit 

set /p cho= 

if %cho% == 1 goto loginfile 
if %cho% == 2 goto Register 
if %cho% == 3 exit 

if not defined variable (
goto loop 
) 

:Register 
cls 
set /p User=Enter A Username: %=% 

IF EXIST %User%.txt (

call :colorEcho c %User% 
call :colorEcho c " Already Exists." 
echo. 
call :colorEcho c "Please Choose A Different Username." 
echo. 

goto Register 
) ELSE (
set /p Pass=Enter A Password: %=% 
set /p RePass=Re-Enter Password: %=% 
) 

if %RePass%==%Pass% goto RegFinal 
if not %RePass%==%Pass%(
call :colorEcho C "Passwords Do Not Match" 
echo. 
goto Register 
) 

:RegFinal 
cls 
echo %Pass%>%User%.txt 
echo Welcome %User% 
pause 
goto mainmenutwo 

:looptwo 
:loginfile 
cls 
echo Which file will you login in as? 
echo. 
echo 1.) Save 1 

set /p save= 

if %save% == 1 goto LOGIN 1 

if not defined variable (
goto looptwo 
) 

:LOGIN 1 
cls 
echo ------------------------------------------------ 
echo      Login 
echo ------------------------------------------------ 
echo. 
echo. 
set /p "username=>" 
set /p "password=>" 

if not %username% == goto LOGINGERROR 
if not %password% == goto LOGINGERROR 

goto mainmenutwo 

:LOGINERROR 
echo ------------------------------------------------ 
echo      Error 
echo ------------------------------------------------ 
echo Invalid Username or password 
pause 
goto LOGIN 1 

:loopthree 
cls 
:mainmenutwo