Board logo

标题: 求证关于批处理中延迟环境变量扩充的一个简单问题? [打印本页]

作者: qasa     时间: 2007-1-6 10:56    标题: 求证关于批处理中延迟环境变量扩充的一个简单问题?
在资料中看到:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)
为什么句子中的set VAR=after会无效呢?
这样的语法在复合语句中是无效的吗?

作者: dikex     时间: 2007-1-6 11:13
如没有开启延迟环境变量扩充,当执行上面的if命令时,会首先将if语句里面的"%VAR%全部替换为before,由于复合语句只算一个语句,所以括号里面的也会被替换,那么执行if语句时它就变为了下面的形式再执行
if before" == "before" (
set VAR=after
if "before" == "after" @echo If you see this, it worked
)


如果学过C之类的就很容易理解了,没有开启前,在执行某个语句时那些环境变量只是相当于预处理命令#define ×××而不是变量

作者: qasa     时间: 2007-1-6 11:38
哦,原来是这样,谢谢了,明白

作者: bd123456789     时间: 2007-6-17 10:47
Originally posted by dikex at 2007-1-6 11:13 AM:
如没有开启延迟环境变量扩充,当执行上面的if命令时,会首先将if语句里面的"%VAR%全部替换为before,由于复合语句只算一个语句,所以括号里面的 ...



"如果学过C之类的就很容易理解了,没有开启前,在执行某个语句时那些环境变量只是相当于预处理命令#define ×××而不是变量 "

不太明白
如果开启了,程序中的变量又是怎么执行的呢?
讲到底,不明白延迟环境变量的作用!!!
求教大家