1

我有一个文件集,我想重命名路径的一部分:

例如:

From
c:\projects\a\dir\subdir\file1.txt
To
c:\projects\b\dir2\subdir\file1.txt

在这种情况下,我想将“a\dir”重命名为“b\dir2”。

为什么我需要这个?我有两个项目目录:a 和 b。我想删除 b 中存在的所有文件(使用 ant)。带有文件的示例 2:

c:\projects\a\dir\file1.txt
c:\projects\a\dir\subdir\file2.txt

c:\projects\b\dir\file1.txt
c:\projects\b\dir\subdir\file2.txt
c:\projects\b\dir\file3.txt

在这种情况下,我想从项目 b 中删除 file1.txt 和 subdir/file2.txt(因为项目 a 中只存在这两个)。

获取文件集很容易:

<path id="filesInProjectA">
    <fileset dir="c:\projects\a" includes="**/*.*" />
</path>

我尝试使用<pathconvert.../>,但它对我不起作用......

谢谢:安德拉斯

4

1 回答 1

1
<pathconvert property="filePaths" refid="filesInProjectA" pathsep=";">
    <map from="c:\projects\a\dir\" to="c:\projects\a\dir2\" />
</pathconvert>

这应该有效。这会将所有转换后的路径放入属性 filePaths 中,以“;”分隔。虽然用什么符号分隔路径并不重要,但重要的是要知道它是什么符号,这就是为什么应该指定它的原因。

之后,您可以使用它对每个转换后的路径执行操作:

<foreach list="${filePaths}" delimiter=";" target="target-for-each-path" param="path" />
于 2012-05-02T10:06:36.943 回答