Batch file 使用CMD运行参数在范围内的可执行文件

Batch file 使用CMD运行参数在范围内的可执行文件,batch-file,for-loop,cmd,Batch File,For Loop,Cmd,我需要多次执行同一个程序,但每次都使用不同的参数。 所以我创建了一个批处理文件,它循环并调用这个程序。批处理如下所示: FOR /L %%G IN (5,1,15) DO program.exe -t %%G 现在我有了相同的程序,但我还想在每次通话时向它发送更多的参数,这些参数将是从0到%%G/2的数字 例如,对于%%G为10,我希望使用以下参数运行程序: program.exe -t 10 -s 0 1 2 3 4 这可以在windows批处理中以某种方式完成吗?@ECHO OFF SE

我需要多次执行同一个程序,但每次都使用不同的参数。 所以我创建了一个批处理文件,它循环并调用这个程序。批处理如下所示:

FOR /L %%G IN (5,1,15) DO program.exe -t %%G
现在我有了相同的程序,但我还想在每次通话时向它发送更多的参数,这些参数将是从0到%%G/2的数字

例如,对于%%G为10,我希望使用以下参数运行程序:

program.exe -t 10 -s 0 1 2 3 4
这可以在windows批处理中以某种方式完成吗?

@ECHO OFF
SETLOCAL
::第一种方法-使用子例程
对于(5,1,15)中的/L%%G,请拨打:sub%%G
::第二种方式-使用“delayedexpansion”
SETLOCAL ENABLEDELAYEDEXPANSION
对于/L%%G IN(5,1,15)DO(
集合/a parm2=%%G/2
对于/L%%T IN(2,1,!parm2!)进行回波(第二路%%G%%T
)
后藤:EOF
:sub
设置/a参数m2=%1/2
对于/L%%T IN(2,1,%parm2%)的情况,进行回波(第一路%1%%T
后藤:EOF
第一种方法使用一个子例程,该子例程从传递的第一个参数计算第二个参数,
%1
到子例程;
%G
到主例程

第二种方法使用延迟扩展,它允许使用
!var!
访问变量
parm2
,因为变量被循环操作更改。
%parm2%
将在循环开始之前被
parm2
的值替换。(请参阅有关
延迟扩展的任意SO项)


澄清后

::使用“delayedexpansion”
SETLOCAL ENABLEDELAYEDEXPANSION
对于/L%%G IN(5,1,15)DO(
设置“paramstr=”
集合/a parm2=%%G/2
对于(0,1,!parm2!)中的/L%%T,请设置“paramstr=!paramstr!%%T”
ECHO(program.exe%%G!paramstr!
)
后藤:EOF

这将使用延迟扩展将所需范围累加到
paramstr
,谢谢,但每次都将使用不同的变量运行程序。我想将0到
%%G/2之间的所有数字发送给它。因此,您建议的内容将打印出来(对于%%G=10):方式10 0、方式10 1等。当我希望打印时:方式10 0 1 2 3 4