首页 > 解决方案 > 用户输入文本时批处理文件不断崩溃

问题描述

我一直在努力让这段代码工作......

我试过重新做代码......也无济于事,下面的代码有点大......

:ST
if exist password.txt goto login
if not exist password.txt goto signup
:login
set /p user=<username.txt
set /p pass=<password.txt
set /p answer=Username: 
if %answer% = %user% goto p1
if NOT %answer% = %user% goto errlog111
exit
:p1
set /p answer=Password: 
if %answer%=%pass% goto 
if NOT %answer% = %pass% goto errlog111
echo success
pause
exit
:signup
title Username needed for account creation! / Newex / Unregistered
set /p answer=Username: 
echo %answer% > username.txt
cls
set /p answer=Password: 
echo %answer% > password.txt
cls
echo Account created!
goto login
exit
:errorlog111
echo Username / Password incorrect!
pause
goto login

所以,我想要它检查用户输入的密码.txt(或用户名.txt)的内容,如果用户输入正确的内容,它会继续下一步。但是,如果他们得到密码或用户名错误,那么我希望它说“用户名/密码错误!” 但是由于某种原因,当我输入用户名时,批处理文件就关闭了!请帮忙!

标签: batch-file

解决方案


if %answer% = %user% goto p1

正确的语法是使用==or EQU

更好的语法是

if "%answer%" == "%user%" goto p1
  • 引号可以防止一些非法输入,并且参数包含某些字符,例如 , ;字符串之间的任何比较。

请注意,if /i ...使比较不区分大小写(供将来参考)

另外 - 一个很难看到的错误

echo %answer% > username.txt

将在文件中包含answer值后面的空格

> username.txt echo %answer%

不会包括这个(大概)不需要的空间。


推荐阅读