中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-07 18:12
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » call的多重引用符的特征?何解 查看 683 回复 1
楼 主 call的多重引用符的特征?何解 发表于 2008-03-16 17:43 ·  中国 广东 汕头 电信
初级用户
积分 53
发帖 20
注册 2007-06-08 18:31
19年会员
UID 90697
性别 男
状态 离线
刚刚看了一个帖子,讲的是call能调用什么
http://www.cn-dos.net/forum/viewthread.php?tid=28552&fpage=1&highlight=%2Bbjsh

看了第七楼everest79的这段话
不太理解其中的cmd交互模式,

for 在初始化时已将引用变量全部扩展,所以这时for内的变量已经是实际值,而不在是扩展字符,也就是静态值,针对这一特点,又出现了变量延迟,反过来说就是一种在for这种命令类型中充许动态存在的变量,而call的作用就像是在当前命令进程下建立了一个子进程,而这个子进程的变量是与当前CMD的变量缓存同步的,这样也是起到了类似延迟的作用,针对变量,call命令还有一个就是多重引用符的特征
set pri1=
set test=%pri1%
set pri1=999
echo %test% => out: %pri1%
call echo %test% => out:999
以上例子中=>符号后的为屏幕输出,这是在CMD交互模式下的操作,因为批处理中对引用符敏感,所以需要增加多余的引用符号,这也间接证明了,call是工作在如同子进程下的一个环境中的

就我理解所谓的交互,就是打开cmd ,在命令行下的模式,对吗


还有对其中的

set pri1=
set test=%pri1%
set pri1=999
echo %test% => out: %pri1%
call echo %test% => out:999
不太理解,我试了一下,结果跟everest79前辈一样
但是假如
set pri1=1 如果这里有定义值的话
set test=%pri1%
set pri1=999
echo %test% => out: 1
call echo %test% => 1

则结果都为1了,这里实在是不解
2 发表于 2008-03-16 17:45 ·  中国 广东 汕头 电信
初级用户
积分 53
发帖 20
注册 2007-06-08 18:31
19年会员
UID 90697
性别 男
状态 离线
不好意思,发错地方了,请斑竹帮我移动到dos疑难板块。实在抱歉
论坛跳转: