gpt4 book ai didi

ant - 如何在 Ant 复制期间剥离一个文件夹

转载 作者:行者123 更新时间:2023-12-04 11:59:49 25 4
gpt4 key购买 nike

我有一个文件,其文件路径类似于“LibraryX/A/Stuff/FileY.txt”,我在 Ant 构建中将其用作包含文件。但是,我需要在复制过程中删除路径的“LibraryX/A/”部分:文件从“LibraryX/A/Stuff/FileY.txt”复制并进入“Stuff/FileY.txt” ”。我研究了一些 regexpmappers,但根本没有成功。 :/

这样做的目的是目标文件夹可以覆盖“Stuff/MoreStuff”中的自定义文件,我想使用 overwrite="false"将磁盘访问保持在最低限度并保持自定义文件完好无损。

Ant :

<copy todir="C:/targetdir/" overwrite="false">
<fileset dir="C:/sourcedir/">
<includesfile name="C:/targetdir/includes.file" />
</fileset>
</copy>

包括.文件:
LibraryX/A/Stuff/FileA.txt
LibraryX/A/Stuff/FileB.txt
LibraryX/A/Stuff/FileC.txt
LibraryX/A/Stuff/FileY.txt

来源目录:
sourcedir/LibraryX/A/Stuff/FileA.txt
sourcedir/LibraryX/A/Stuff/FileB.txt
sourcedir/LibraryX/A/Stuff/FileC.txt
sourcedir/LibraryX/A/Stuff/FileY.txt

目标目录:
targetdir/Stuff/FileY.txt

现在,sourcedir 的 Stuff 文件夹中的所有文件都应该以 targetdir 的 Stuff 文件夹结尾。但是如何?

奖金:如果我从“targetdir/LibraryX/A/Stuff”移动文件,它们将覆盖“targetdir/Stuff”文件夹中的所有内容,即使 overwrite="false"也是如此。大概是因为它们比当前 Stuff 文件夹中的文件更新。

注:当然,我可以将自定义文件从目标目录中移开,复制内容,然后将自定义文件移回,覆盖新文件。但这会大量访问磁盘,从而减慢了进程。

最佳答案

从 Ant v1.8.2 开始,您可以使用 cutdirsmapper从文件路径中去除一些前导目录。查看最底部 mapper type docs .

<copy todir="C:/targetdir/" overwrite="false">
<fileset dir="C:/sourcedir/">
<includesfile name="C:/targetdir/includes.file" />
</fileset>
<cutdirsmapper dirs="2"/>
</copy>

奖金:您可以使用 touch ant 任务使 targetdir 中的所有文件比所有源文件都新,从而防止它们被覆盖。

关于ant - 如何在 Ant 复制期间剥离一个文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5820375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com