Windows 修改批处理文件中的参数列表
我正在创建一个批处理文件,它接受一个参数,后跟一个文件名列表。我想将文件名列表传递给批处理文件中的另一个可执行文件,但不想同时传递第一个参数 像这样:Windows 修改批处理文件中的参数列表,windows,batch-file,command-line,Windows,Batch File,Command Line,我正在创建一个批处理文件,它接受一个参数,后跟一个文件名列表。我想将文件名列表传递给批处理文件中的另一个可执行文件,但不想同时传递第一个参数 像这样: Usage: LaunchTest.bat <config file> files ... 知道如何从%*中删除参数,或构造任意长度的参数列表以传递给命令吗 谢谢,新年快乐。@ECHO OFF @echo off echo config file: %~1 setlocal enableDelayedExpansion set
Usage: LaunchTest.bat <config file> files ...
知道如何从%*中删除参数,或构造任意长度的参数列表以传递给命令吗
谢谢,新年快乐。@ECHO OFF
@echo off
echo config file: %~1
setlocal enableDelayedExpansion
set "rest_of_line="
for %%a in (%*) do (
if !.!==. (
set "rest_of_line=!rest_of_line! %%a"
)
set .=.
)
endlocal && (
set "rest_of_line=%rest_of_line%"
)
echo %rest_of_line%
SETLOCAL
设置参数=%*
调用集参数=%%参数:**%1=%%
回显%parms:~1%
回声========第二路
SETLOCAL enabledelayedexpansion
设置参数=%*
设置参数=!参数:*%1=!
回显%parms:~1%
后藤:EOF
有两种方法-使用和不使用delayedexpansion。这很有效,而且在传递每个参数之前,我还可以选择对其进行调整。我一点也不懂语法,尽管我对批处理文件语法只有非常基本的了解。
@echo off
echo config file: %~1
setlocal enableDelayedExpansion
set "rest_of_line="
for %%a in (%*) do (
if !.!==. (
set "rest_of_line=!rest_of_line! %%a"
)
set .=.
)
endlocal && (
set "rest_of_line=%rest_of_line%"
)
echo %rest_of_line%