Board logo

标题: call的多重引用符的特征?何解 [打印本页]

作者: komafd2     时间: 2008-3-16 17:43    标题: call的多重引用符的特征?何解

刚刚看了一个帖子,讲的是call能调用什么
http://www.cn-dos.net/forum/view ... p;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了,这里实在是不解
作者: komafd2     时间: 2008-3-16 17:45
不好意思,发错地方了,请斑竹帮我移动到dos疑难板块。实在抱歉