Board logo

标题: call 变量截取 [打印本页]

作者: komafd2     时间: 2008-6-28 15:25    标题: call 变量截取

call :标签 "参数1" "参数2" ...
从:开始到首次出现的空格,当作标签的结束符.(标签可作为%0参数,即标签前与后的空格将被视作参数分隔符,)
call :^^^.... 将会是个空语句.
主标签中&(非^&)后的字符被当作语句执行.执行完后再跳转到副标签处.
副标签中含|&><:5个字符其中之一时,后面的字符被当作注释,将不进行任何解释.
标签字符不能为单独的<space> &()^=;%+,:|但以下特殊字符作为的标签是合法的:
`, '  ,^^ , ^^& ,  "<space>"  ,  "   ,  "", @,[,],{,},?,/,\,*,-,$,#,~,.,
当启用延迟环境变量时,!不能作为标签.
汉字,与其他扩展字符,以及混合字符也可以作为标签.
虽然不提倡用这些特殊字符作为标签,但是它们可以实现一些一般方法难以实现的脚本.
参数最多9个,再多就要借助"shift"命令(见后面)
call 在跳转的标签时遵循下面规则:
1, 大小写不区分,
2, 先在call 语句后面找,后面没有再在前面找.
3, 多个相同标签时只执行找到的第一个标签.
将这三点归纳成一句话就是:
,大小写不分,先后再前,执行一次.


这段话看了几次还是不理解

这段话出自plp626 的cmd 学习
http://www.cn-dos.net/forum/viewthread.php?tid=37382

[ Last edited by komafd2 on 2008-6-28 at 10:36 PM ]
作者: huahua0919     时间: 2008-6-28 19:24
1,不区分大小写很好理解,
2,批处理是按行执行的,所以先一直往下执行,找不到了再回头找
3,这个好理解,和第二个一样,既然按行执行,找到第一个就执行了下面的标签就失效了
作者: plp626     时间: 2008-6-28 21:20
楼主不必较真,自己实践下也可以总结出几个规律,但仅仅是自己总结的,是否经得起考验得问时间,还有大家的测试。

这几句话是测试总结出的,不是什么铁律。若要问为什么,涉及cmd解释器原理,如果懂汇编兴许也可以解释几句。

PS:以后问问题望把出处附加上,大家有个底
作者: komafd2     时间: 2008-6-28 22:34
出处就是你的 cmd 学习
^_^,我发帖之后觉得没有说明出处有些不妥
但是当时没有时间该,就关了,现在补上

也谢谢huahua0919兄,我再看看,想想
作者: zhouhuang     时间: 2008-7-15 22:43    标题:

谢谢!
作者: hisplay     时间: 2008-8-17 15:39
写得好........