if "%!var!%"=="after" echo it worked!
要这样 if "!var!"=="after" echo it worked
在set 的帮助信息里就有这样的说法嘛```
其实说白了也就是CMD的预处理机制在起作用,启用变量扩充(所谓的变量延迟)就会防止这个问题了,以下两个例子会有帮助:
echo %var% 写在if 语句里
@echo off
cls
set var=before
if "%var%"=="before" (
set var=after
echo %var%
)
pause>nul
echo %var% 写在if 语句外
@echo off
cls
set var=before
if "%var%"=="before" (
set var=after
)
echo %var%
pause>nul