2016-05-17 42 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