批处理文件,要求输入用户名/密码+注册

时间:2009-05-24 11:42:14

标签: login batch-file

我想要一个可以将用户注册到自身的批处理文件。 类似的东西:

@echo off
echo Choose an option:
echo     1:Register
echo     2:Login
Set option=
set /p option=Your option: 
if %option%==1 goto reg
if %option%==2 goto login
...
:reg
--The registration script--
goto login
...
:login
Set usr=
set /p usr=Username: 
if %usr%== goto pass
echo False username!
@pause
goto login
...
:pass
Set passw=
set /p passw=Password: 
if %passw%== goto success
echo False password!
@pause
goto login

所以...这样的事情。 'if%passw%==“”如果%usr%==“”'===它应该在注册时自动生成。

如果超过1人可以注册,那就太好了。

11 个答案:

答案 0 :(得分:1)

要测试空字符串,请在两边放置引号:

if "%usr%"==""

要附加到文本文件,请使用>>

echo %usr%:%pass% >> passwd.txt

要循环文件内容,请使用/ f:

for /f "delims=: tokens=1,2" %%x in (passwd.txt) do (
  if "%%x"=="%usr%" then (
    set usrfound=true
  )
)
if "%usrfound%"=="" then (
  rem Register user
) else (
  rem Check password and succeed/fail
)

在测试或调试期间,确保回声已打开。如果要在for循环或其他多行语句中设置和测试变量,请将其放在文件的开头附近:

setlocal enabledelayedexpansion

任何时候你需要读取块内可能已经改变的变量,使用!var!而不是%var%。

答案 1 :(得分:1)

嗯。这是我在一些帮助下发现的:

@echo off
title REGISTERANDLOGIN
if exist programbase.dll goto login
if not exist programbase.dll goto register

:register
title Register
echo Register
echo.
echo Please fill in the blanks.
echo.
Set usrname=
set /p usrname=Username: 
Set passw=
set /p passw=Password: 
echo %usrname%>> programdata.dll
echo %passw%>> programbase.dll
goto login

:login
:begin
set usr=
set /p usr=Enter your username: 
if {%usr%}=={} goto :begin
set authenticated=
for /f "tokens=*" %%a in (programdata.dll) do (
    if {%%a}=={%usr%} set authenticated=true
)

if not defined authenticated (echo Invalid Username & goto :begin)

:passwo
set pass=
set /p pass=Enter your password: 
if {%pass%}=={} goto :begin
set authenticated=
for /f "tokens=*" %%a in (programbase.dll) do (
    if {%%a}=={%pass%} set authenticated=true
)
if not defined authenticated (echo Invalid password & goto :begin)

:loggedin
cls
echo Welcome.
@pause
exit /b 0

答案 2 :(得分:1)

我想知道这是否有效:

 @ echo off 
 goto username
 :username
 echo Hello, please log in with your user ID or type "reg" to register.
 echo Username: 
 set /p user
 if %user%== username(s)here goto password
 if %user%==reg goto register
 if not defined user (
 cls
 echo Bad username!
 pause
 exit
 )

然后执行程序的其余部分。我试试这个,如果它不起作用,请告诉我它!

答案 3 :(得分:1)

你可以尝试这个。 。 。我写了一个批处理文件,其中包含登录名和注册模块。它会创建一个存储帐户的文件。登录后,会包含“Color Changer”和“TicTacToe”等特殊功能。 TicTacToe不是我的,我从中得到了它 www.screwthelotofyou.webs.com/files/。这个文件和换色器都是我的。 “重现,编辑和分发你想要的一切。好像我能阻止你。” - ScrewTheLotofYou

我不能在这里粘贴代码,这太长了。 。 。链接:http://www.mediafire.com/?kwzzvk24nuze8fq 希望它有效。 :D~meilviruz99

答案 4 :(得分:0)

this web site上发现了一些严重的邪恶伎俩,包括:

ECHO Enter some input, and press Enter when ready . . .
ECHO ←[13;0;64;13p
COPY CON USRINPUT.TMP
ECHO ←[13;13p
CLS
ECHO You typed:
TYPE USRINPUT.TMP

使用ANSI密钥转换将Enter更改为CTRL-Z。

答案 5 :(得分:0)

我不能说我完全理解你的问题,但如果对与批处理脚本相关的任何事情有疑问,我建议你查看这个网站this website

该教程非常详尽,易于理解,并且曾多次帮助过我。

答案 6 :(得分:0)

@echo off

if exist "%userprofile%\documents\Login\Accounts" goto start0

if not exist "%userprofile%\documents\Login\Accounts" md "%userprofile%\documents\Login\Accounts"

 :start0

title Login

color 02

cls

echo ---------------------------------

echo              Login.

echo ---------------------------------

echo.

echo.

echo.

echo 1.Create New Username.

echo 2.Log in.

echo.

echo.

echo.

set /p A=Choice:

IF '%A%' == '1' GOTO NewUser0

IF '%A%' == '2' GOTO Login0

IF NOT '%A%' == '1' GOTO start0

:NewUser0

cls

color 02

cd "%userprofile%\documents\Login\Accounts"

set /p newuser=New Username:

IF EXIST %newuser%.bat GOTO inval0

set /p newpass=New Password:

echo set realusername=%newuser% >> %newuser%.bat

echo set password=%newpass% >> %newuser%.bat

IF EXIST %newuser%.bat GOTO NewUser1

IF NOT EXIST %newuser%.bat GOTO NewUser2

:NewUser1

echo Your Account Has Been Created Successfully. Press An Key To Continue.

pause >nul

GOTO start0

:NewUser2

cls

color 0c

del /f /q %newuser%.bat

echo ERROR!Account Could Not Be Created For Unknown Reasons.Press Any Key To Continue

pause >nul

GOTO start0

:Login0

cls

color 02

cd "%userprofile%\documents\Login\Accounts"

echo Login.

echo.

echo.

echo.

echo.

set /p loguser=Username:

IF NOT EXIST %loguser%.bat GOTO inval1

:Login1

set /p logpass=Password:

call %loguser%.bat

if %logpass% == %password% goto success0

goto invalid2

:inval0

cls

color 0c 

echo Desired Username Already Exists. Press Any Key To Continue.

pause >nul

GOTO start0

:inval1

cls

color 0c 

echo Desired Username Does NOT Exist. Press Any Key To Continue.

pause >nul

GOTO start0

:invalid2

cls

color 0c 

echo Invalid Password. Press Any Key To Continue.

pause >nul

cls

color 02

echo Login.

echo.

echo.

echo.

echo.

echo Username:%loguser%

GOTO Login1

:Success0

cls

color 02

title End Of My Script

echo You Successfully Logged In.

echo Here Is Where You Continue The Script.

ping localhost -n 3 >nul

echo.

echo.

echo.

echo Press Any Key To Exit.

pause >nul 

exit

答案 7 :(得分:0)

查看这个非常简单的聊天程序:

@echo off
cls
echo @prompt set date=$d$_set time=$t$h$h$h > {a}.bat
%comspec% /e:2048 /c {a}.bat > {b}.bat
for %%v in ({b}.bat del) do call %%v {?}.bat
:LoGINSCR
ECHO Euronet MessageBoard
ECHO v1.0 [BETA]
goto LOGIN
:LOGIN
ECHO.
set/p user=Login As:
if %user%==Eugene goto PASSWORD
if %user%==Toxic goto PASSWORD
if %user%==Plague goto PASSWORD
if %user%==Jason goto PASSWORD
goto LOGIN
:PASSWORD
set/p pass=Password:
if %pass%==$euronet$ goto SYSTEM
goto LOGIN
:SYSTEM
ECHO Welcome to Euronet MessageBoard, %user%.
goto INPUTMAIN
:INPUTMAIN
ECHO.
set/p main=%user%/chat:
if %main%==help goto HELP
if %main%==join goto JOIN
if %main%==quit goto EXIT
if %main%==ic goto IC
goto ERROR
:IC
ping google.com
PAUSE
ping wikipedia.org
PAUSE
ping facebook.com
PAUSE
ipconfig
PAUSE
goto INPUTMAIN
:ERROR
ECHO [ERROR] No command found ("%main%")
goto INPUTMAIN
:HELP
ECHO Type help to show the help page.
ECHO Type join to join board
ECHO Type quit to exit MessageBoard
ECHO Type ic for internet check
ECHO After you joined the board, you can update
ECHO your screen by pressing "Shift & 6".
goto INPUTMAIN

:JOIN
ECHO.
set/p mesgc=Enter your message:
ECHO %user% [%time%] - %mesgc% >> messg1
goto TRAFFIC
:TRAFFIC
cls
TYPE messg1
goto JOIN
:CLS
cls
goto TRAFFIC
:EXIT
exit

它使用一个文件,但多个用户可以运行bat文件并连接到该文件。它通过重复循环TYPE和set / p命令来工作。虽然它无法自行更新聊天列表,但您可以按Shift和6更新它,然后按Enter键。

答案 8 :(得分:0)

为什么不将输入与用户文件进行比较? 为每个用户创建一个文件,并且可以获得加密和解密程序以自动运行以获得最大安全性。 批量是一个简单的launguage。只是乱了一会儿。

答案 9 :(得分:0)

我为此感到非常自豪:) 这有两个不同的文件:login.bat用于处理登录,login2.bat用于处理注册。 login.bat:

@echo off
choice /c:RL /m "Choose an option: Register (R) or Login (L).:
if errorlevel 2 goto login
if errorlevel 1 goto register
:register
start /wait C:\[path]\login2.bat
cls
goto login
:in
cls
echo Welcome %u%
echo.
echo Bla Bla Bla or start "a program"
pause
exit
:login
set /p u=Username
set /p p=Password

和login2.bat:

@echo off
:a
set /p a="Choose a Username"
set /p b="Choose a Password"
echo.
choice /m "Are you sure you would like your Username to be %a% and your Password to be %b%?"
if errorlevel 2 goto a
set q="if %%u%% equ %a% if %%p%% equ %b% goto in"
for /f "tokens=*" %%I in (%q%) do set m=%%I
echo %m% >>C:\[path]\login.bat
exit

之所以:in,处理成功登录后发生的事情的标签必须在login.bat的中间而不是在结尾处,以便用户名/密码组合可以附加到:login标签。显然你可以添加其他装饰并更改文件的名称,但这是我的基本设计。我喜欢这些是多么短暂和易懂。它们在100%的时间里都像魅力一样。 希望这有帮助!

答案 10 :(得分:0)

我没有提供完整的源代码,因为你们所有人都知道如何做到这一点。

一个非常简单的方法来做你要求的就是只有一个注册和一个检测文件的登录页面。只需创建一些像userSaves或passSaves这样的目录。然后你让系统只检测登录时文件是否存在:

:page
set /p usr=Username:
if exist mydir\LoginProgram\saves\userSaves\%usr% (
echo Valid Username.
pause
goto passentry
cls
 ) else (
echo Invalid Username.
pause
goto page
cls
)
:passentry
cls
set /p pass=Password:
 if exist mydir\LoginProgram\saves\passSaves\%pass% (
echo Valid Password. Welcome!
pause
goto whateverpage
cls
 ) else (
echo Invalid Password. Login failed.
pause
goto page
cls
)

超级简单的代码。为注册做同样的事情。