- 帖子
- 508
- 积分
- 1490
- 技术
- 87
- 捐助
- 0
- 注册时间
- 2008-7-17
|
关于这个问题可以解释
大家都知道CMD执行命令之前要进行预处理
预处理其中有一项就是变量扩展或者叫变量替换
那么根据上文的set var=a"bs"c
%var:*"=set "var=%在经过变量扩展后就变成了
set "var=bs"c
CMD预处理之后执行这一句set "var=bs"c
而set的自己的预处理会把引号对脱掉
同时丢弃掉引号对后的字符c
所以set实际上执行了set var=bs
至于为什么丢弃掉c
是因为如果set的参数串中出现了引号对
那么它只把引号对中的字符串作为唯一参数
其它内容一概丢弃
看看set ""test=value
以及set "path"=newpath
的执行结果就明白了 |
|