从命令行将可变数量的选项和文件名解析为两个批处理变量

时间:2019-05-01 19:57:23

标签: batch-file cmd

我在Windows CMD中具有以下命令行来运行批处理程序,该程序需要将参数和文件名传递给在批处理文件中调用的另一个程序:

mysample.bat -parm1=7 -parm2="abc" -parm3 myfile

我的目标是解析命令行并使用两个变量%options%%filename%结束。 %options%包含在命令行中输入的参数,%filename%包含文件名。

这两个变量应包含以下内容(从上面的示例命令行中): %options%包含-parm1=7 -parm2="abc" -parm3 %filename%filename包含myfile

我尝试了for循环的变体,但无济于事。我在这里和其他地方搜索了示例,但没有找到满足我需求的东西。

有人可以在批处理程序中提供清晰,强大的方法吗?预先感谢。

谢谢

1 个答案:

答案 0 :(得分:0)

发表评论后,我假设您需要遍历每个参数并将所有参数设置为选项,因此使用%*可以捕获所有参数。

for %%i in (%*) do echo %%~i

根据您的要求,如果每次都将文件名作为最后一个参数,则可以使用以下选项:

@echo off
setlocal enabledelayedexpansion
(for %%i in (%*) do set "filename=%%~i")>nul
set "options=%*"
set "options=!options:%filename%=!"
echo %options% %filename%