我想在命令批处理脚本中为多个参数放置一个变量,因为数量可能会有所不同。就像在 shell 中使用 $@ 一样。我尝试了几种方法,但都没有用。
[编辑:我知道 %* 有效,但实际上需要使用 SHIFT 运算符删除第一个参数并将其余参数分配给变量。但是当我执行 SHIFT 并检查 %* 时,它仍然显示所有原始参数,这与 unix shell 不同。]
目前我正在使用 FOR 循环来执行此操作,但想知道是否有其他命令/方法来弹出第一个参数并将其余参数分配给另一个变量。
例如:SomeCommand“多个参数”
答案1
%*
批处理文件中保存了传递给脚本的所有参数(不包括脚本名称本身),与编写时完全一致。
这些对你也可能有用:
%0
- 用于调用批处理文件的命令(可以是foo
,,,等等)是第一个命令行参数,是第二个命令行参数, 依此类推,直到..\foo
(和
c:\bats\foo.bat
%1
%2
%9
转移
9日以后的也可以使用)。
SHIFT
使用以下命令的示例:
batchfile.bat The Quick Brown
- 如下所示:
%0
=The Quick Brown、%1
=The、%2
=Quick、%3
=Brown。 - SHIFT 之后:
%0
=The Quick Brown、%1
=Quick、%2
=Brown - 第二次 SHIFT 后:
%0
=The Quick Brown,%1
=Brown
对于“除了第一个参数之外的所有参数”这个问题,没有好的答案。批处理语言对于适用于所有可能参数的方法不够精确,因此使用 SHIFT 是最好的方法。
有关可能的解决方案的讨论可以在帖子中找到
有没有办法指示批处理文件中的最后 n 个参数?