Ant目标运行Windows BAT,包括更改目录

时间:2012-10-31 12:10:50

标签: 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">
        <arg value="/c"/>
        <arg value="runtool.bat"/>
    </exec>
</target>

它不起作用。从this link和其他研究,我了解以下内容:

  • “Z:”可能相当于“cd Z:\”
  • 没有“cd.exe”...“cd”由Windows CMD shell解释,不能通过“cmd.exe”获取
那说,如何实现Ant的目标?在Java?

我愿意编写自己的Ant任务,对目录进行进一步的网络配置等。(冒着使问题过于宽泛的风险,我们也在使用Jenkins并在那里开放思路。)

2 个答案:

答案 0 :(得分:0)

您必须在dir任务中指定exec属性:

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

答案 1 :(得分:0)

这对我有用:

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