![]() |
中国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: "如果学过C之类的就很容易理解了,没有开启前,在执行某个语句时那些环境变量只是相当于预处理命令#define ×××而不是变量 " 不太明白 如果开启了,程序中的变量又是怎么执行的呢? 讲到底,不明白延迟环境变量的作用!!! 求教大家 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |