2015-01-09 158 views
0

我正在爲我的操作系統製作登錄系統。而且還有一個錯誤,我不知道如何解決它批處理文件登錄系統

@echo off 
color 02 
IF NOT EXIST Users md Users 
:start 
:menu 
cls 
echo         ZEROS 0.2.1 LOGIN 
echo. 
echo [1]-Sign in 
echo [2]-Register 
echo [3]-User List 
echo [4]-Exit 
echo. 
set /p input=Your choice: 
if %input%==1 goto log 
if %input%==2 goto reg 
if %input%==3 goto ucheck 
if %input%==4 exit 
echo Invalid Choice 
pause 
goto menu 
:reg 
cls 
color 02 
echo        ZEROS 0.2.1 REGISTER 
echo. 
set /p user="Enter new username: " 
echo %user%>>"Users\userlist.txt" 
cls 
echo        ZEROS 0.2.1 REGISTER 
echo. 
set /p pass="Enter new password: " 
echo %pass% >> "Users\%user%.txt" 
goto menu 
:log 
cls 
echo        ZEROS 0.2.1 LOGIN 
echo. 
set /p user="Username: " 
cls 
echo        ZEROS 0.2.1 LOGIN 
echo. 
set /p pass="Password: " 
@echo off 
set /p password=<Users\%user%.txt 
@echo off 
if %pass% equ %password% call console.bat 
pause 
goto menu 
:ucheck 
IF NOT EXIST Users (
cls 
echo There are no users. 
pause 
goto start 
) 
:users 
if not exist Users\userlist.txt (
goto reg 
) 
cls 
cd Users 
echo        ZEROS 0.2.1 USERS 
echo. 
type userlist.txt 
pause 
goto start 

當我選擇第三個選項一個時間,它工作得很好,但如果我選擇第三個選項的2倍以上,這表明沒有用戶。如何解決它?

回答

0

這是因爲Users\Users不存在。在某些時候,你cd Users,但從來沒有cd ..。邏輯問題。

我建議您不要使用cd,使用pushd Users,然後使用popd當您想要返回時。您還應該在腳本的頂部添加setlocalSee this page解釋爲什麼這很重要。

並且不要害怕在括號代碼塊中的段和縮進之間添加雙行換行,以提高代碼的可讀性。這個腳本和程序集一樣可讀。 :P