18

私はいくつかのファイルを持っています:

dir/foo.txt
dir/bar.txt
dir/foobar.txt

Antapplyタスクで、ファイルのリストを引数として渡したい:

<target name="atask">
    <apply executable="${cmd}" parallel="false" verbose="true">
        <arg value="-in"/>
        <srcfile/>
        <arg value="dir/foo.txt"/>
        <arg value="dir/bar.txt"/>
        <arg value="dir/foobar.txt"/>

        <fileset dir="${list.dir}" includes="*.list"/>
    </apply>
</target>

これは問題なく動作しますが、ファイルセットを使用して動的にファイルのリストを選択したい場合はどうすればよいでしょうか:

<fileset dir="dir" includes="*.txt"/>

argこのファイルセットを要素 (ファイルごとに 1 つ)に変換するにはどうすればよいですか? 何かのようなもの:

<arg>
    <fileset dir="dir" includes="*.txt"/>
</arg>

それ以外の

<arg value="dir/foo.txt"/>
<arg value="dir/bar.txt"/>
<arg value="dir/foobar.txt"/>

( argがfilesetをサポートしていないため、この例は機能しません)

4

1 に答える 1

27

pathconvertタスクの使用例を次に示します。

変換されたパスは、 を使用して実行可能ファイルに渡されます<arg line />

これは、ファイルのパスにスペースが含まれていないことを前提としてい*.txtます。

<target name="atask">
    <fileset dir="dir" id="myTxts">
        <include name="*.txt" />
    </fileset>
    <pathconvert property="cmdTxts" refid="myTxts" pathsep=" " />

    <apply executable="${cmd}" parallel="false" verbose="true">
        <arg value="-in" />
        <srcfile />
        <arg line="${cmdTxts}" />

        <fileset dir="${list.dir}" includes="*.list" />
    </apply>
</target>

スペースに遭遇する可能性がある場合は、上記のように行う必要がありますが、次のように変更します (できればどの行かは明らかです)。

    <pathconvert property="cmdTxts" refid="myTxts" pathsep="' '" />

        <arg line="'${cmdTxts}'"/>
于 2010-01-27T23:19:37.963 に答える