2

NAnt 有directory::get-last-write-timefile::get-last-write-time,但我正在寻找一种方法来获取目录中任何文件的最新写入时间(递归)或文件集。

directory::get-last-write-time 可能看起来很有用,但只有在直接写入目录中的文件时才会更新,而不是子目录中的文件。

有没有办法用股票 NAnt 做到这一点,或者我是否必须编写一些递归目录/文件集的所有内容并找到最近的写入时间的东西?

4

1 回答 1

1

您可以使用 NAnt 使用普通的旧<foreach>循环来执行此操作。有点尴尬,但它有效:

<target name="go">
  <fileset
    id="paths"
    basedir="C:\foo">
    <include name="**/*" />
  </fileset>
  <!-- preset with Unix epoch -->
  <property
    name="most.recent"
    value="1970-01-01T00:00:00Z" />
  <foreach item="File" property="path">
    <in>
      <items refid="paths" />
    </in>
    <do>
      <property
        name="current"
        value="${file::get-last-write-time(path)}" />
      <property
        name="most.recent"
        value="${current}"
        if="${datetime::parse(current) > datetime::parse(most.recent)}" />
    </do>
  </foreach>
  <echo message="${most.recent}" />
</target>
于 2012-07-07T18:19:02.917 回答