1

ファイルセットがあり、パスの一部の名前を変更したい:

例えば:

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

この場合、「a\dir」の名前を「b\dir2」に変更します。

なぜこれが必要なのですか?a と b の 2 つのプロジェクト ディレクトリがあります。aに存在する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 にはこの 2 つしか存在しないため)。

ファイルセットを取得するのは簡単です:

<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 に答える