Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 在由.cmd文件设置的环境中执行Ant目标_Batch File_Ant - Fatal编程技术网

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

Batch file 在由.cmd文件设置的环境中执行Ant目标,batch-file,ant,Batch File,Ant,我想从Ant脚本启动一个.exe。.exe要求先运行.cmd文件以准备环境。需要说明的是:如果我打开一个控制台,首先运行.cmd,然后运行.exe,一切正常。我在Windows7中工作 这是我目前拥有的,但它不起作用,我假设是因为.cmd作为它自己的进程运行,当控件返回到Ant时,我失去了该作用域,因此下一个目标运行,并且不知道.cmd文件中发生了什么。或者至少这似乎正在发生 我已经弄乱了不同的cmd开关,产生了真/假等,但似乎没有什么真正的工作,我不知道谷歌为什么看到这种情况的工作示例 <

我想从Ant脚本启动一个.exe。.exe要求先运行.cmd文件以准备环境。需要说明的是:如果我打开一个控制台,首先运行.cmd,然后运行.exe,一切正常。我在Windows7中工作

这是我目前拥有的,但它不起作用,我假设是因为.cmd作为它自己的进程运行,当控件返回到Ant时,我失去了该作用域,因此下一个目标运行,并且不知道.cmd文件中发生了什么。或者至少这似乎正在发生

我已经弄乱了不同的cmd开关,产生了真/假等,但似乎没有什么真正的工作,我不知道谷歌为什么看到这种情况的工作示例

<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>

您可以在同一命令行上调用这两个函数

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

原因是您不能提供公正的&;至少这对我不起作用。

只要使用DOS call命令,Slav建议的“arg line=”方法就可以工作:

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

但是,当您需要执行一个外部.cmd来设置环境变量时,并没有将所有内容都保存在Ant脚本中。既然您依赖于Ant之外的.cmd,那么在那里还有另一个文件.bat是不是很糟糕?老实说,我首先会考虑将.cmd的功能移植到Ant中,以坚持您自己的偏好,将所有内容都保留在AntI中。我对Ant是新手,所以这是一次学习体验。我试图在不破坏这个过程的情况下尽可能多地保留脚本中的内容。我让它与外部批处理文件一起工作,不,它看起来并不那么糟糕。.cmd文件是一个非常庞大的专有脚本,我不想弄乱它,因此您建议将.cmd移植到Ant是不可取的。我会给你的答案一个机会,不过,谢谢你的评论我的问题与此方法,cmd运行,但没有坚持。下一步中的exe不知道:用户环境没有为继续执行做好充分准备。老实说,我想我已经试过这个方法了。我已经做了很多不同的事情,很难说:我终于做到了。我需要在some.exe之前打个电话。
<exec executable="cmd">
    <arg line="/c somefile.cmd &amp;"/>
    <arg value="some.exe"/>
    <arg value="-whatever"/>
    <arg value="somevalue"/>
    <!-- etc. -->
</exec>
<exec executable="cmd">
  <arg line="/c call some.cmd &amp; call some.exe" />
</exec>