【问题标题】:How to run 2 or more batch files in parallel, from an ant script?如何从 ant 脚本并行运行 2 个或多个批处理文件?
【发布时间】:2016-05-26 08:00:30
【问题描述】:

我的意图是使用 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>

有人可以帮忙吗?

【问题讨论】:

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


    【解决方案1】:

    "请注意,.bat 文件通常不能直接执行。通常需要使用 /c 开关执行命令 shell 可执行 cmd。" - https://ant.apache.org/manual/Tasks/exec.html

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

    此外,&lt;exec&gt;&lt;/exec&gt; 基本上包装到 Windows CreateProcess() API,它运行 bat 或任何文件扩展名作为它自己的进程,这意味着它将并行运行。不是积极的,但我相信你的&lt;parallel&gt;&lt;/parallel&gt; 只会产生异步启动 .bats 的效果。

    此外,我还将跟进 msdn 的 CreateProcess() API,以确保您在 Windows 上正确使用 &lt;exec&gt;&lt;/exec&gt;

    也更改了您的代码

    <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 也必须位于工作目录的底部。如果不更改第二个&lt;arg value&gt;,则在文件名前添加相对路径。也许应该这样做?

    【讨论】:

      最近更新 更多