windows 命令中的 shell 变量 $@ 相当于什么?

windows 命令中的 shell 变量 $@ 相当于什么?

我想在命令批处理脚本中为多个参数放置一个变量,因为数量可能会有所不同。就像在 shell 中使用 $@ 一样。我尝试了几种方法,但都没有用。

[编辑:我知道 %* 有效,但实际上需要使用 SHIFT 运算符删除第一个参数并将其余参数分配给变量。但是当我执行 SHIFT 并检查 %* 时,它仍然显示所有原始参数,这与 unix shell 不同。]

目前我正在使用 FOR 循环来执行此操作,但想知道是否有其他命令/方法来弹出第一个参数并将其余参数分配给另一个变量。

例如:SomeCommand“多个参数”

答案1

%*批处理文件中保存了传递给脚本的所有参数(不包括脚本名称本身),与编写时完全一致。

这些对你也可能有用:

%0- 用于调用批处理文件的命令(可以是foo,,,等等)是第一个命令行参数,是第二个命令行参数, 依此类推,直到..\foo(和 c:\bats\foo.bat
%1
%2
%9转移 9日以后的也可以使用)。

如何将命令行参数传递给 Windows 批处理文件

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 个参数?

相关内容