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