12# plp626
call存在对"^"的错误处理
而且使用 call :label 会丢失掉%0
而在 :label 中可能会使用到这个 %0
比如遇到错误时的抛出处理
或者对自身文本内容的操作
所以在此之前需要 set program_name=%0
至于%1 %2 %3
即使goto到:label
也仍然可以使用%*分析命令行
而call:%2 %*会把/plp也传进去
这未必是你想看到的吧?
“如果shift要goto费时”
没看懂
下面是采用:标志子过程调用的处理方法
调用采用 call lib.cmd :sub1 arg1 arg2- @echo off
- for /f "tokens=2 delims=:" %%s in ("_%1") do shift/1&goto %%s
-
- :sub1
- echo %0-%1-%2-%3.
- echo %*.
- pause
- goto :eof
复制代码 下面是采用.标志子过程调用的处理方法
调用采用 call lib.cmd sub1. arg1 arg2- @echo off
- if [%~sn1.]==[%~s1] shift/1&goto :%~sn1
-
- :sub1
- echo %0-%1-%2-%3.
- echo %*.
- pause
- goto :eof
复制代码
|