Java 运行Windows BAT的Ant目标,包括更改目录
我有一个Windows BAT文件,如下所示:Java 运行Windows BAT的Ant目标,包括更改目录,java,ant,cmd,Java,Ant,Cmd,我有一个Windows BAT文件,如下所示: Z: tool.exe c:\mypath\to\input c:\mypath\to\output \flag1 flag2 也就是说,tool.exe驻留在映射的网络驱动器上。该工具要求EXE从其自己的目录运行(在本例中为Z) 当通过双击或在CMD窗口中运行时,BAT工作正常 我想通过Ant实现自动化。我的尝试是: <target name="go"> <exec executable="cmd">
Z:
tool.exe c:\mypath\to\input c:\mypath\to\output \flag1 flag2
也就是说,tool.exe驻留在映射的网络驱动器上。该工具要求EXE从其自己的目录运行(在本例中为Z)
当通过双击或在CMD窗口中运行时,BAT工作正常
我想通过Ant实现自动化。我的尝试是:
<target name="go">
<exec executable="cmd">
<arg value="/c"/>
<arg value="runtool.bat"/>
</exec>
</target>
以及其他研究,我了解以下内容:
- “Z:”很可能与“cd Z:\”等效
- 没有“cd.exe”。。。“cd”由Windows CMD shell解释,不能通过“CMD.exe”使用
也就是说,如何在Ant中实现目标?在爪哇
我愿意编写我自己的Ant任务,对目录进行进一步的网络配置,等等(冒着问题过于宽泛的风险,我们正在使用Jenkins,并对那里的想法持开放态度)。您必须在exec
任务上指定dir
属性:
<exec executable="tool.exe" dir="z:">
<arg value="c:\mypath\to\input"/>
<arg value="c:\mypath\to\output"/>
<arg value="flag1"/>
<arg value="flag2"/>
</exec>
这对我很有用:
<target name="go">
<property name="batFileDir" location="${basedir}/resources" />
<exec executable="cmd" dir="." spawn="false">
<arg line="/C start ${batFileDir}/runTool.bat"/>
</exec>
</target>
其中runTool.bat如问题中所述,位于~/resources中。谢谢,但不起作用。。。收到此消息:Execute failed:java.io.IOException:无法运行程序“tool.exe”(在目录“z:\”):CreateProcess error=2,系统找不到指定的文件如果tool.exe
不在路径上,请尝试将完整路径放入可执行文件属性(executable=“c:\path\to\tool.exe”
)。