2015-01-09 154 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