我有一个父文件夹,而里面有几个文件夹。为了实现自动化,我想根据时间戳获取两个文件夹中的最新文件夹。
我尝试使用timstampselector来获取最新文件夹。
<timestampselector property="latest.modified">
<path>
<dirset dir="MyDirectoryPath">
<include name="*" />
</dirset>
</path>
</timestampselector>
在我的父文件夹中,有以下文件夹:
test (Last modified on 07/04/2019 10:30 AM)
check (Last modified on 08/04/2019 05:00 PM)
integrate (Last modified on 08/04/2019 12:30 PM)
slave (Last modified on 09/04/2019 05:00 PM)
我们的脚本应采用最新的两个修改后的文件夹,在上述情况下,它应为 integrate&slave 。
我该如何实现?
答案 0 :(得分:1)
通常来说,最好尽可能避免使用蚂蚁。可以使用本机Ant的资源集合快速解决此特定问题:
<last count="2" id="latest.two.files">
<sort>
<date />
<fileset dir="MyDirectoryPath" />
</sort>
</last>
完整的示例目标:
<target name="select-latest">
<delete dir="testdir" />
<mkdir dir="testdir" />
<touch file="testdir/test" datetime="07/04/2019 10:30 AM" />
<touch file="testdir/check" datetime="08/04/2019 05:00 PM" />
<touch file="testdir/integrate" datetime="08/04/2019 12:30 PM" />
<touch file="testdir/slave" datetime="09/04/2019 05:00 PM" />
<last count="2" id="latest.two.files">
<sort>
<date />
<fileset dir="testdir" />
</sort>
</last>
<echo message="${toString:latest.two.files}" />
</target>
答案 1 :(得分:0)
您正在使用的任务是Ant-Contrib的一部分,而不是核心Ant。该文档说您可以使用count
属性来说明要选择多少个项目。根据您的情况,将其设置为两个:
<timestampselector property="latest.modified" count="2">
<path>
<dirset dir="MyDirectoryPath">
<include name="*" />
</dirset>
</path>
</timestampselector>
这对我来说似乎很好:该属性设置为两个目录的逗号分隔列表。