这里的问题的简短版本,
我从一个批处理文件运行一个可执行文件(它又运行一个模拟)。我一次最多可以运行四个。有什么方法可以检查(从批处理文件中)一次运行多少个这些可执行文件?
长版,
我有一个批处理文件,它允许我运行多个模型,但由于许可,我不能同时运行超过 4 个模型。但是,我可以将它们排队等待运行,但是我正在努力编写一个批处理文件,以确保始终有四个模型在运行。我的最大努力(通过搜索互联网拼凑而成)如下
FOR %%a in (%A%) do (
FOR %%b in (%B%) DO (
FOR %%c in (%C%) DO (
FOR %%d in (%D%) DO (
SET /A COUNT+=1
SET /A Result =!COUNT!%%4
:: set Result to the remainder of the Count divided by 4
if !Result! == 0 (
start "TUFLOW" /wait C:\Tuflow\TuflowExe\Build_2011_09_AF_64\TUFLOW_iSP_w64.exe -e1 %%a -s1 %%b -s2 %%c -s3 %%d C:\Tuflow\Model\Ohoka\runs\OH.tcf
) else (
start "TUFLOW" C:\Tuflow\TuflowExe\Build_2011_09_AF_64\TUFLOW_iSP_w64.exe -e1 %%a -s1 %%b -s2 %%c -s3 %%d C:\Tuflow\Model\Ohoka\runs\OH.tcf
)
)
)
)
)
其中 A、B、C 和 D 是包含传递给可执行文件的变量组合的数组。然后我有一个记录迭代的计数,在每第四次迭代中,触发 if 语句的“真”条件,并且批处理等待模型运行完成,然后再继续。
这没关系,但是我的其他三个模型可能会更早完成,从而释放出未使用的宝贵 cpu 时间,因为批处理正在等待第四次迭代完成。或者更糟糕的是,第四次迭代在其他三个迭代之前完成并最终尝试运行四个以上的模型,这会导致许可弹出,需要用户关闭。
我一定会错过任何建议或其他解决方案吗?