NAnt中目录或文件集的上次写入时间

时间:2012-06-16 20:39:13

标签: file directory nant

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

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

有没有办法用库存NAnt执行此操作,还是我必须编写一些内容来处理目录/文件集的所有内容并查找最近的写入时间?

1 个答案:

答案 0 :(得分:1)

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

<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>