在我的批处理文件中,我想将多个参数传递给其他应用程序。
现在我做了
app.exe %1 %2
并且它只能传递两个参数,但我想传递传递给批处理的所有参数(我宁愿不写%1%2%3%4 ... )
有没有神奇的方法可以做到这一点?
答案 0 :(得分:36)
有一种神奇的方式!我知道,但我记不住了。
其%*
答案 1 :(得分:4)
另一种方法是使用一个双引号参数。在调用其他应用程序时,只需使用命令行中的%~N
设备删除引号。
如果您打算传递给应用程序的某些参数本身是双引号,那么这些引号字符必须重复两次。
这是一个插图脚本,它使用第一个参数作为应用程序的名称,第二个作为组合参数列表传递给应用程序:
@ECHO OFF
CALL %1 %~2
以下是针对不同情况调用脚本的示例(传递一个参数或多个参数或引用参数)。
将1个参数传递给应用:
C:\>mybatch.bat app.exe "app_param"
C:\>mybatch.bat app.exe app_param
传递几个参数:
C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3"
传递包含空格的参数(因此必须引用):
C:\>mybatch.bat app.exe """parameter with spaces"""
组合示例:一些参数是空格,其他参数不是:
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
如果您需要某种动态参数计数,或者您想要禁止某个参数,这可能很有用。