我想从Ant脚本中启动.exe。 .exe要求首先运行.cmd文件以准备环境。要清楚:如果我打开一个控制台,首先运行.cmd,然后运行我的.exe,一切都很好。我在Windows 7中工作。
这是我现在拥有的但是它不起作用,我假设因为.cmd作为自己的进程运行,并且当控制返回到Ant时我丢失了该范围,因此下一个目标运行并且不知道关于.cmd文件中发生的事情。或者至少那是看起来正在发生的事情。
我已经搞乱了不同的cmd开关,产生了真/假等等,但似乎没有什么真正起作用,我不知道Google应该如何看待这种情况的实例。
<target name="-someTarget">
<exec executable="cmd" spawn="false">
<arg value="/c" />
<arg value="somefile.cmd" />
</exec>
<exec executable="some.exe" spawn="false">
<arg value="-whatever" />
<arg value="somevalue" /> <!-- etc. -->
</exec>
</target>
这是我现在的解决方法,但如果可能的话,我宁愿将所有内容保存在我的Ant脚本中。
<target name="-someTarget">
<exec executable="cmd" spawn="false">
<arg line='/c somefile.bat "c:\some path\" an-arg "c:\another path\.txt" "c:\and another\.log"' />
</exec>
</target>
somefile.bat:
call %1\somefile.cmd
call %1\some.exe %2 %3 %4
答案 0 :(得分:0)
您可以在同一命令行上调用两者
<exec executable="cmd">
<arg line="/c somefile.cmd &"/>
<arg value="some.exe"/>
<arg value="-whatever"/>
<arg value="somevalue"/>
<!-- etc. -->
</exec>
<arg line>
的原因是您无法&
向<arg value>
提供({至少那对我不起作用。
答案 1 :(得分:0)
&#39; arg line =&#39;只要使用DOS调用命令,Slav建议的方法就可以使用:
<exec executable="cmd">
<arg line="/c call some.cmd & call some.exe" />
</exec>