中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 23:53
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 求证关于批处理中延迟环境变量扩充的一个简单问题?
可打印版本  1,093 / 3
第1楼 qasa 发表于 2007-01-06 10:56
高级用户 发帖 311 积分 959 来自 广东-LianJiang
求证关于批处理中延迟环境变量扩充的一个简单问题?
在资料中看到:
set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "%VAR%" == "after" @echo If you see this, it worked
)
为什么句子中的set VAR=after会无效呢?
这样的语法在复合语句中是无效的吗?
第2楼 dikex 发表于 2007-01-06 11:13
高级用户 发帖 366 积分 788
如没有开启延迟环境变量扩充,当执行上面的if命令时,会首先将if语句里面的"%VAR%全部替换为before,由于复合语句只算一个语句,所以括号里面的也会被替换,那么执行if语句时它就变为了下面的形式再执行
if before" == "before" (
set VAR=after
if "before" == "after" @echo If you see this, it worked
)


如果学过C之类的就很容易理解了,没有开启前,在执行某个语句时那些环境变量只是相当于预处理命令#define ×××而不是变量
第3楼 qasa 发表于 2007-01-06 11:38
高级用户 发帖 311 积分 959 来自 广东-LianJiang
哦,原来是这样,谢谢了,明白
第4楼 bd123456789 发表于 2007-06-17 10:47
中级用户 发帖 216 积分 360
Originally posted by dikex at 2007-1-6 11:13 AM:
如没有开启延迟环境变量扩充,当执行上面的if命令时,会首先将if语句里面的"%VAR%全部替换为before,由于复合语句只算一个语句,所以括号里面的 ...



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

不太明白
如果开启了,程序中的变量又是怎么执行的呢?
讲到底,不明白延迟环境变量的作用!!!
求教大家
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023