在以下示例中,我想从父批处理文件调用子批处理文件,并将所有剩余的参数传递给子进程。
C:\> parent.cmd child1 foo bar C:\> parent.cmd child2 baz zoop C:\> parent.cmd child3 a b c d e f g h i j k l m n o p q r s t u v w x y z
在parent.cmd内,我需要删除参数列表中的%1,并且只将剩余的参数传递给子脚本。
set CMD=%1 %CMD% <WHAT DO I PUT HERE>
我已经研究使用SHIFT与%*,但这不工作。虽然SHIFT会将位置参数向下移动1,但%*仍指原始参数。
任何人都有什么想法?我应该放弃和安装Linux吗?
可悲的是,%*将总是扩展到所有原始参数。但是,您可以使用以下代码段来构建一个包含除第一个参数之外的所有变量的变量:
rem throw the first parameter away shift set params=%1 :loop shift if [%1]==[] goto afterloop set params=%params% %1 goto loop :afterloop
我认为它可以做得更短,虽然…我不经常写这样的事情:)
应该工作,但。