当我尝试在 .BAT 文件 IF 语句中使用 : 子句延迟扩展环境变量时,该行无法解析/执行。使用 % 符号代替 ! 用于扩建工程。相同的延迟扩展适用于其他地方,例如 ECHO 语句。例如:
@echo off& setlocal enabledelayedexpansion
set t=abcd
echo !t:~0,2!
if %t:~0,2% == ab echo equal
if !t:~0,2! == ab echo equal
回声 !t:~0,2 ! 正确产生:ab
if %t:~0,2% == ab echo equal正确产生:等于
if !t:~0,2 ! == ab echo equal发出错误: 2!这时候出乎意料
我不明白为什么我不能在 IF 语句中使用带有 : 子句的延迟扩展。如果没有冒号子句,IF 语句中的延迟扩展可以正常工作。