2016-05-17 88 views
1

對不起,我只是試圖詳細說明這是如何工作的。批量登錄代碼

我一直在處理登錄代碼,而且當你運行.bat時,它會問你是否要註冊或登錄。註冊工作正常。它創建一個稱爲任何用戶名的文本文件。因此,如果您輸入用戶名「User1」,它將創建一個名爲「User1.txt」的新文本文件。之後,它要求輸入2次密碼以確保您輸入的密碼正確無誤。一旦你在兩次輸入密碼就會保存「User1.txt」文件裏的密碼,所以現在你「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 

遇到的問題IM是登錄的內部有一個密碼。我從上面創建了2個具有註冊功能的用戶。用戶名-r1密碼-p1和用戶名-r2密碼-p2。如果我登錄它會詢問你的用戶名和密碼。我輸入r1和p1,然後進入不正確的登錄屏幕。我再次鍵入r1和p1,它顯示歡迎屏幕。此外,如果我鍵入r1和p1在它循環回:登錄,因爲它認爲它是錯誤的用戶/密碼。但是當我去輸入用戶名和密碼在我再次可以使用R2和P1或R2和密碼保留空白,它會讓我進r2和P1,甚至空密碼

: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 
) 

回答

1

你看,答案很簡單。你應該:A:避免使用調用,除非你有一個需要調用的額外數據保存的文件,B:去掉%=%,因爲set/p命令允許你輸入並提交你的選擇,而不使用額外的子命令,C:嘗試在登錄之前添加一個菜單,應該是這樣的: (在輸入之前必須輸入內容:echo請輸入[user/pass],我添加的登錄位也有如果不是%用戶名%== *轉到LOGINERROR,並且如果不是%password%== *轉到LOGINERROR,那麼通過添加你想要的用戶名/密碼作爲*所在的位置來編輯 我添加了作爲主您的代碼功能,所以您可以登錄而不會失敗,並且您的註冊功能可以讓其他人使用您創建此代碼的任何方式臨時創建帳戶,而無需使用您的帳戶。請隨時編輯此代碼隨心所欲並以任何你想要的方式重新分配它,因爲不應該有代碼破壞的錯誤對你進行操作並且每個觀看這些內容的人都會了解批量編碼方面的新知識,因爲花了我幾個小時的時間才能將我的代碼在本站點上覆制/粘貼到原來的位置。享受!)

@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