第一个()中的内容的确不执行,但仍会替换为其值。
if ==211这句不存在语法错误吗?
换句话说,在语句未被解析执行之前,cmd.exe会把%%闭合的变量替换为常量值。
if defined var (
if %var%==211 start d:\bat\abc.txt
) else (
echo 密钥不正确!
)
这其实是一条语句,一条完整的语句。搜索下变量延迟,会明白处理流程的。
:ee
@cls & echo off & color e
echo.
set "var=" & set /p var= 输入密钥:
if defined var (
if "%var%"=="211" (start d:\bat\abc.txt
) else (
echo 密钥不正确!
)) else (
echo 密钥不正确!
)
pause & goto ee