这个批处理文件有什么问题?

这个批处理文件有什么问题?

我的批处理程序中有一个非常烦人的错误导致它停止运行。我确信它出现在语句的某个地方IF,但我是初学者,在网上找不到任何东西,所以我来到这里

:englog
CLS
set/p "login=login: "
set/p "password=password: "
if %login%.txt exist AND if %password% == %login%.txt goto logedEng
if %login%.txt not exist OR if not %password% == %login%.txt goto englog & start didntloggedin.vbs

答案1

if 语法错误。运行if /?以了解如何使用它:

Performs conditional processing in batch programs.

IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command

如您所见,它不支持AND,并且必须在比较之前放置 NOT。为什么使用goto englog & start didntloggedin.vbs。一旦转到另一行,那么如何在旧行上运行命令?

另一个问题是,如果变量为空(例如当用户什么都不输入时),就会发生错误。您需要将字符串括在引号内,以便每次都能正常工作。对于 AND 条件,请使用多个 IF,如下所示

if exist "%login%.txt" if "%password%" == "%login%.txt" goto logedEng

相关内容