2009-05-24 82 views
3

我想批量文件,可以注册一个用户自己。 这样的东西:需要用户名/密码+注册的批处理文件

@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人可以注册将会很好。

+0

“注册”是什么意思?用户可以注册的 – 2009-05-24 11:49:11

+0

。就像在stackoverflow上一样。只是它创建了一个用户,它会记住它以后登录。 – 2009-05-24 12:00:46

回答

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 
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密钥转变来改变输入到CTRL-Z。

+0

是的...很棒..但不是什么即时通讯寻找。 – 2009-05-24 11:58:13

+0

从用户获取输入字符串在批处理文件中很难;我无法想象建立注册系统会有多困难。或者它很容易被打破;毕竟,每个人都可以阅读批处理文件的来源。 – Andomar 2009-05-24 12:28:10

+0

这在任何最新版本的Windows上都无法正常工作。至少不是带有ANSI转义序列的部分。 – Joey 2009-05-24 12:41:21

0

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

该教程非常详尽,易于遵循,并帮助了我很多次。

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循环或其他多语句,把这个文件的开头附近:

​​

,你需要阅读可能块中已经改变了变量的任何时间,使用!var!而不是%var%。

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

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

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 
) 

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

1

你可以试试这个。 。 。我写了一个批处理文件,其中包含登录&注册模块。它创建一个存储创建帐户的文件。登录时,包含特殊功能,如“换色器”和“TicTacToe”。TicTacToe不是我的,我从 www.screwthelotofyou.webs.com/files/得到它。这个文件和换色器是我的。 “重现,编辑和发布你想要的任何东西,就好像我可以阻止你。” - ScrewTheLotofYou

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

0

为什么不直接比较输入到用户文件? 为每个用户创建一个文件,并可能会得到一个加密和解密程序自动运行以获得最大的安全性。批次是一种非常简单的语言。只是乱了一阵子。

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 

之所以:中,它处理你登录成功后必须在中间而不是在发生什么标签login.bat的结尾是为了使用户名/密码组合可以被追加到:login标签。显然你可以添加其他装饰并更改文件的名称,但这是我的基本设计。我喜欢这些是多么简短和易于理解。而且他们在100%的时间里都很有魅力。 希望这有助于!

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 
) 

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

相关问题