2

我有一个简单的 Ant 任务,它列出了文件夹中的所有“.png”文件:

<target name="listimages">
    <!-- Assume files a A and B -->
    <fileset id="dist.contents" dir="${basedir}">
        <include name="**/*.png"/>
    </fileset>

    <pathconvert pathsep="${line.separator}"
                 property="prop.dist.contents" 
                 refid="dist.contents">
        <mapper type="flatten" />
        <map from="${basedir}" to=""/>
    </pathconvert>
    <echo>${prop.dist.contents}</echo>
</target>

这打印

[echo] A.png
[echo] B.png

但是,我想要的是文件名在每行出现两次

[echo] A.png,A.png
[echo] B.png,B.png

我怎样才能做到这一点?

(这个问题是如何将文件集打印到文件的后续问题,每行一个文件名? )

4

1 回答 1

1

您可以使用实现展平和复制的正则表达式映射器(而不是展平)。这非常简单,但可能会:

<mapper type="regexp" from=".*/(.*)" to="\1,\1" />

需要调整您的本地路径分隔符。

更好的是,使用链式映射器代替扁平化:

<chainedmapper>
    <mapper type="flatten" />
    <mapper type="regexp" from="(.*)" to="\1,\1" />
</chainedmapper>
于 2010-06-03T13:06:17.657 回答