Windows 批处理文件是否具有 %* 结构?

Rog*_*mbe 11 scripting windows batch-file

在批处理文件中,我是否必须执行(例如)以下操作?

@echo off
call other.bat %1 %2 %3 %4 %5 %6 %7 %8 %9
Run Code Online (Sandbox Code Playgroud)

Rog*_*mbe 11

Windows 批处理文件(自 Windows XP 起,但可能更早)支持该%*构造,该构造对从 %1 开始的所有参数求值。

不幸的是,这不符合该SHIFT命令,因此以下操作不起作用:

@echo off
set EATEN=%1
shift

call other.bat %*
Run Code Online (Sandbox Code Playgroud)

它仍然会将第一个参数传递给第二个批处理文件。

  • 注意:`%*` 保留空格/引号。 (2认同)

Gra*_*row 11

您可以使用以下方法将所有参数收集在一起:

set args=%1
shift
:start
if [%1] == [] goto done
set args=%args% %1
shift
goto start

:done
(use %args% here)
Run Code Online (Sandbox Code Playgroud)

无论有多少参数,这都有效。