IAd*_*ter 18 windows command-line batch-file
在我的批处理文件中,我想将多个参数传递给其他应用程序.
现在我做到了
app.exe %1 %2
Run Code Online (Sandbox Code Playgroud)
它只能传递两个参数,但我想通过传递给该批次的所有参数(我宁愿不写%1%2%3%4 ...)
有什么神奇的方法可以做到吗?
您可以使用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
Run Code Online (Sandbox Code Playgroud)
如果您需要某种动态参数计数,或者您想禁止某个参数,这可能很有用。
另一种方法是使用双引号参数。当调用其他应用程序时,您只需%~N
在命令行上使用设备删除引号即可。
如果您打算传递给应用程序的某些参数本身是双引号的,则这些引号字符必须重复两次。
下面是一个示例脚本,它使用第一个参数作为应用程序的名称,使用第二个参数作为要传递给应用程序的组合参数列表:
@ECHO OFF
CALL %1 %~2
Run Code Online (Sandbox Code Playgroud)
以下是针对不同情况调用脚本的示例(传递一个参数或多个参数或引用的参数)。
将 1 个参数传递给应用程序:
C:\>mybatch.bat app.exe "app_param"
C:\>mybatch.bat app.exe app_param
Run Code Online (Sandbox Code Playgroud)传递几个参数:
C:\>mybatch.bat app.exe "app_param1 app_param2 app_param3"
Run Code Online (Sandbox Code Playgroud)传递包含空格的参数(因此必须加引号):
C:\>mybatch.bat app.exe """parameter with spaces"""
Run Code Online (Sandbox Code Playgroud)一个组合示例:一些参数带有空格,其他则没有:
C:\>mybatch.bat app.exe "param_with_no_spaces ""parameter with spaces"" another_spaceless_param"
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
25645 次 |
最近记录: |