我在Windows CMD中具有以下命令行来运行批处理程序,该程序需要将参数和文件名传递给在批处理文件中调用的另一个程序:
mysample.bat -parm1=7 -parm2="abc" -parm3 myfile
我的目标是解析命令行并使用两个变量%options%
和%filename%
结束。
%options%
包含在命令行中输入的参数,%filename%
包含文件名。
这两个变量应包含以下内容(从上面的示例命令行中):
%options%
包含-parm1=7 -parm2="abc" -parm3
%filename%
,filename
包含myfile
我尝试了for
循环的变体,但无济于事。我在这里和其他地方搜索了示例,但没有找到满足我需求的东西。
有人可以在批处理程序中提供清晰,强大的方法吗?预先感谢。
谢谢
答案 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%