在.cmd文件设置的环境中执行Ant目标

时间:2014-04-04 18:59:31

标签: batch-file ant

我想从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

2 个答案:

答案 0 :(得分:0)

您可以在同一命令行上调用两者

<exec executable="cmd">
    <arg line="/c somefile.cmd &amp;"/>
    <arg value="some.exe"/>
    <arg value="-whatever"/>
    <arg value="somevalue"/>
    <!-- etc. -->
</exec>

<arg line>的原因是您无法&amp;<arg value>提供({至少那对我不起作用。

答案 1 :(得分:0)

&#39; arg line =&#39;只要使用DOS调用命令,Slav建议的方法就可以使用:

<exec executable="cmd">
  <arg line="/c call some.cmd &amp; call some.exe" />
</exec>