如何重命名文件集中的路径的一部分

时间:2012-05-02 09:59:07

标签: ant

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

例如:

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.../>,但它对我不起作用......

感谢: 安德拉斯

1 个答案:

答案 0 :(得分: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" />