批处理文件登录系统

时间:2015-01-09 19:19:23

标签: windows batch-file login cmd system

我正在为我的操作系统创建一个登录系统。并且有一个错误,我不知道如何解决它

@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次或更多次,则表明没有用户。如何解决?

1 个答案:

答案 0 :(得分:0)

这是因为Users\Users不存在。在某些时候,您cd Users,但从不cd ..。逻辑问题。

我建议您使用cd代替pushd Users,然后使用popd。您还应该在脚本顶部setlocalSee this page解释为什么这很重要。

并且不要害怕在括号代码块中的节和缩进之间添加双重换行符以提高代码的可读性。此脚本与程序集一样可读。 :P