2009-11-30 118 views
6

我想創建一個目標,該目標在特定文件夾中清理超過7天的日誌文件。當我嘗試在文件集內放入「日期」元素時出現錯誤。我怎麼去解決這個問題?nAnt刪除7天以前的文件

<delete> 
    fileset basedir="${StageIISRoot}/MySite/App_Data/ErrorLog"> 
     <date datetime="${datetime::now() - timespan::from-days(7)}" when="before"/> 
     <include name="*.xml" /> 
    </fileset> 
</delete> 

回答

8

我沒有看到使用「date」元素的任何文檔。你可能會考慮這樣的事情:

<fileset id="thelogs" basedir="${StageIISRoot}/MySite/App_Data/ErrorLog"> 
    <include name="*.xml" /> 
</fileset> 

再後來引用文件集中在一個循環來檢查文件的日期和刪除:

<foreach item="File" property="filename"> 
    <in> 
     <items refid="thelogs" /> 
    </in> 
    <do> 
     <if test="${timespan::get-days(datetime::now() - file::get-last-write-time(filename)) >= 7}"> 
      <delete file="${filename}" /> 
     </if> 
    </do> 
</foreach> 
+0

我收到一個錯誤說:「源目錄MYPATH/thelogs不存在 – user176657

+0

已更新爲嵌套「in」並使用refid,適用於我的系統。 –

5

什麼是這樣的:

<tstamp> 
    <format property="last.week" pattern="MM/dd/yyyy hh:mm" locale="en,UK" offset="-7" unit="day"/> 
</tstamp> 
<echo>Delete backups before ${last.week}</echo> 
<delete> 
    <fileset dir="${dst.dir}"> 
     <date datetime="${last.week}" when="before"/> 
    </fileset> 
</delete> 

它似乎爲我工作:-)

+2

日期格式需要一個小小的改變:然後它對我有效預期。 – aerobiotic