1

次のようなWindowsBATファイルがあります。

Z:
tool.exe c:\mypath\to\input c:\mypath\to\output \flag1 flag2

つまり、tool.exeはマップされたネットワークドライブに存在します。このツールでは、EXEを独自のディレクトリ(この場合はZ:)から実行する必要があります。

BATは、ダブルクリックまたはCMDウィンドウで実行すると正常に機能します。

Antで自動化したいのですが。私の試みはここにあります:

<target name="go">
    <exec executable="cmd">
        <arg value="/c"/>
        <arg value="runtool.bat"/>
    </exec>
</target>

動作しません。このリンクと他の調査から、私は次のことを理解しています。

  • 「Z:」は「cdZ:」と同等である可能性があります
  • 「cd.exe」はありません...「cd」はWindowsCMDシェルによって解釈され、「cmd.exe」からは使用できません。

そうは言っても、Antで目標を達成するにはどうすればよいでしょうか。Javaで?

私は自分のAntタスクを作成したり、ディレクトリのネットワーク構成をさらに行ったりすることを受け入れています(質問が広すぎるリスクを冒して、Jenkinsを使用しており、そこでもアイデアを受け入れています)。

4

2 に答える 2

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 に答える
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 に答える