call :标签 "参数1" "参数2" ...
从:开始到首次出现的空格,当作标签的结束符.(标签可作为%0参数,即标签前与后的空格将被视作参数分隔符,)
call :^^^.... 将会是个空语句.
主标签中&(非^&)后的字符被当作语句执行.执行完后再跳转到副标签处.
副标签中含|&><:5个字符其中之一时,后面的字符被当作注释,将不进行任何解释.
标签字符不能为单独的<space> &()^=;%+,:|但以下特殊字符作为的标签是合法的:
`, ' ,^^ , ^^& , "<space>" , " , "", @,[,],{,},?,/,\,*,-,$,#,~,.,
当启用延迟环境变量时,!不能作为标签.
汉字,与其他扩展字符,以及混合字符也可以作为标签.
虽然不提倡用这些特殊字符作为标签,但是它们可以实现一些一般方法难以实现的脚本.
参数最多9个,再多就要借助"shift"命令(见后面)
call 在跳转的标签时遵循下面规则:
1, 大小写不区分,
2, 先在call 语句后面找,后面没有再在前面找.
3, 多个相同标签时只执行找到的第一个标签.
将这三点归纳成一句话就是:
,大小写不分,先后再前,执行一次.
这段话看了几次还是不理解
这段话出自plp626 的cmd 学习
www.cn-dos.net/forum ...
[
Last edited by komafd2 on 2008-6-28 at 10:36 PM ]
1,不区分大小写很好理解,
2,批处理是按行执行的,所以先一直往下执行,找不到了再回头找
3,这个好理解,和第二个一样,既然按行执行,找到第一个就执行了下面的标签就失效了
楼主不必较真,自己实践下也可以总结出几个规律,但仅仅是自己总结的,是否经得起考验得问时间,还有大家的测试。
这几句话是测试总结出的,不是什么铁律。若要问为什么,涉及cmd解释器原理,如果懂汇编兴许也可以解释几句。
PS:以后问问题望把出处附加上,大家有个底
出处就是你的 cmd 学习
^_^,我发帖之后觉得没有说明出处有些不妥
但是当时没有时间该,就关了,现在补上
也谢谢huahua0919兄,我再看看,想想
写得好........