1

我有一个如下所示的 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>

它不起作用。通过此链接和其他研究,我了解以下内容:

  • "Z:" 可能等同于 "cd Z:\"
  • 没有“cd.exe”...“cd”由 Windows CMD shell 解释,不能通过“cmd.exe”使用

也就是说,如何在 Ant 中实现目标?在 Java 中?

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

4

2 回答 2

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>
于 2012-10-31T13:34:12.273 回答
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 中。

于 2012-11-01T12:50:25.953 回答