2009-05-24 81 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 
) 

超級簡單的代碼。只要做同樣的事情註冊。

相關問題