如何批量传递多个参数?

时间:2011-02-02 07:03:02

标签: windows batch-file command-line

在我的批处理文件中,我想将多个参数传递给其他应用程序。

现在我做了

app.exe %1 %2

并且它只能传递两个参数,但我想传递传递给批处理的所有参数(我宁愿不写%1%2%3%4 ...

有没有神奇的方法可以做到这一点?

3 个答案:

答案 0 :(得分:36)

有一种神奇的方式!我知道,但我记不住了。

%*

答案 1 :(得分:4)

另一种方法是使用一个双引号参数。在调用其他应用程序时,只需使用命令行中的%~N设备删除引号。

如果您打算传递给应用程序的某些参数本身是双引号,那么这些引号字符必须重复两次。

这是一个插图脚本,它使用第一个参数作为应用程序的名称,第二个作为组合参数列表传递给应用程序:

@ECHO OFF
CALL %1 %~2

以下是针对不同情况调用脚本的示例(传递一个参数或多个参数或引用参数)。

  1. 将1个参数传递给应用:

    C:\>mybatch.bat app.exe "app_param"
    C:\>mybatch.bat app.exe app_param
    
  2. 传递几个参数:

    C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3"
    
  3. 传递包含空格的参数(因此必须引用):

    C:\>mybatch.bat app.exe """parameter with spaces"""
    
  4. 组合示例:一些参数是空格,其他参数不是:

    C:\>mybatch.bat app.exe "param_with_no_spaces ""parameter with spaces"" another_spaceless_param"
    

答案 2 :(得分:3)

您可以使用SHIFT提示符并循环参数。这是一个示例性示例,您将在提示加载应用程序时替换最终的ECHO提示。

@ECHO OFF

SET PARAMS=

:_PARAMS_LOOP

REM There is a trailing space in the next line; it is there for formatting.
SET PARAMS=%PARAMS%%1 
ECHO %1
SHIFT

IF NOT "%1"=="" GOTO _PARAMS_LOOP

ECHO %PARAMS%

PAUSE

如果您需要某种动态参数计数,或者您想要禁止某个参数,这可能很有用。