我的批处理程序中有一个非常烦人的错误导致它停止运行。我确信它出现在语句的某个地方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