我的目的是使用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>
有人可以帮忙吗?
答案 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>
,则在文件名前添加相对路径。也许应该这样做?