2

NAntにはdirectory::get-last-write-timefile::get-last-write-timeがありますが、ディレクトリ内の任意のファイルの最新の書き込み時刻を(再帰的に)取得する方法を探しています。ファイルセット。

directory :: get-last-write-timeは便利に思えるかもしれませんが、サブディレクトリ内のファイルではなく、ディレクトリ内のファイルが直接書き込まれる場合にのみ更新されます。

ストックNAntでこれを行う方法はありますか、それともディレクトリ/ファイルセットのすべての内容を繰り返して最新の書き込み時間を見つける何かを書き込む必要がありますか?

4

1 に答える 1

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>
于 2012-07-07T18:19:02.917 に答える