是否有一种方法来指示批处理文件中的最后n个参数?

前端之家收集整理的这篇文章主要介绍了是否有一种方法来指示批处理文件中的最后n个参数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在以下示例中,我想从父批处理文件调用子批处理文件,并将所有剩余的参数传递给子进程。
  1. C:\> parent.cmd child1 foo bar
  2. C:\> parent.cmd child2 baz zoop
  3. 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,并且只将剩余的参数传递给子脚本。

  1. set CMD=%1
  2. %CMD% <WHAT DO I PUT HERE>

我已经研究使用SHIFT与%*,但这不工作。虽然SHIFT会将位置参数向下移动1,但%*仍指原始参数。

任何人都有什么想法?我应该放弃和安装Linux吗?

可悲的是,%*将总是扩展到所有原始参数。但是,您可以使用以下代码段来构建一个包含除第一个参数之外的所有变量的变量:
  1. rem throw the first parameter away
  2. shift
  3. set params=%1
  4. :loop
  5. shift
  6. if [%1]==[] goto afterloop
  7. set params=%params% %1
  8. goto loop
  9. :afterloop

我认为它可以做得更短,虽然…我不经常写这样的事情:)

应该工作,但。

猜你在找的Bash相关文章