我有一个文件集,我想重命名部分文件:
例如:
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.../>
,但它对我不起作用......
感谢: 安德拉斯
答案 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" />