如何从ant脚本并行运行2个或更多批处理文件?

时间:2016-05-26 08:00:31

标签: batch-file command-line ant cmd parallel-processing

我的目的是使用ant脚本并行运行2个批处理文件。

操作系统:Windows 7

我尝试了这个但是没有用。

<project name="RBS" basedir=".">
    <!--<property name="buildC" value="${basedire}\build-C" /> -->
<target name="start batch parallely">
<parallel >
    <exec dir="RBS" executable="cmd" os="Windows 7">
        <arg line="/c run_parallel.bat"/>
    </exec>
   <exec dir="RBS\Retail_R6" executable="cmd" os="Windows 7">
        <arg line="/c RetailAutomation_R7.bat"/>
    </exec> 
</parallel>
</target>
</project>

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

“请注意.bat文件通常不能直接执行。通常需要使用/ c开关执行命令shell executable cmd。” - Difference between "this" and"super" keywords in Java

<exec executable="cmd">
    <arg value="/c"/>
    <arg value="ant.bat"/>
    <arg value="-p"/>
  </exec>

同样<exec></exec>基本上包含在运行bat或者文件扩展名的Windows CreateProcess() API中,因为它是自己的进程,这意味着它将并行运行。不是肯定的,但我相信你的<parallel></parallel>只会产生异步启动.bats的效果。

此外,我会在msdn上关注CreateProcess() API,以确保您正确使用<exec></exec>用于Windows。

也改变了你的代码

<project name="RBS" basedir=".">
    <!--<property name="buildC" value="${basedire}\build-C" /> -->
<target name="start batch parallely">
<parallel >
    <exec executable="cmd">
        <arg value="/c"/>
        <arg value="RBS/run_parallel.bat"/> 
    </exec>
   <exec executable="cmd">
        <arg value="/c"/>
        <arg value="RBS/Retail_R6/RetailAutomation_R7.bat"/> 
    </exec> 
</parallel>
</target>
</project>

.bats也必须位于工作目录的底部。如果不更改第二个<arg value>,则在文件名前添加相对路径。也许应该这样做?