刚开始接触批处理,在看set命令帮助文件中发现一个问题,请教一个延迟环境变量扩容和直接变量扩容的区别:
在帮助文件中,有以下一段代码:- set VAR=before
- if "%VAR%" == "before" (
- set VAR=after
- if "%VAR%" == "after" @echo If you see this, it worked
- )
复制代码 按我的理解,程序执行的时候都是按照代码中的次序依次执行的,最后的结果应该是输出"If you see this, it worked”
但是帮助文件中给出的解释是:
不会显示消息,因为在读到第一个 IF 语句时,BOTH IF 语句中
的 %VAR% 会被代替;原因是: 它包含 IF 的文体,IF 是一个
复合语句。所以,复合语句中的 IF 实际上是在比较 "before" 和
"after",这两者永远不会相等。
有朋友给详细介绍下为什么吗?谢谢 |