当我运行此脚本时(从.bat文件):setvar1=trueif"%var1%"=="true"(setvar2=myvalueecho%var2%)我总是得到:ECHOison.这意味着var2变量并未真正设置。谁能帮我理解为什么? 最佳答案 var2已设置,但echo%var2%行中的扩展发生在block执行之前。此时var2为空。因此存在delayedExpansion语法,它使用!而不是%并且它在执行时计算,而不是解析时。请注意,为了使用!,需要附加语句setlocalEnableDelayedExpansion。setlo