2009-11-30 17 views
6

Vorrei creare un obiettivo che pulisca i file di registro più vecchi di 7 giorni in una cartella specifica. Ottengo un errore quando provo a inserire un elemento "date" all'interno di un set di file. Come posso andare su questo?nAnt Eliminazione di file più vecchi di 7 giorni

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

risposta

8

Non vedo alcuna documentazione per l'utilizzo dell'elemento "data". Si potrebbe considerare qualcosa di simile:

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

e quindi fare riferimento che set di file più avanti in un ciclo che controlla la data del file e cancella:

<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

Viene visualizzato un messaggio di errore "La directory di origine MYPATH/thelogs non esiste – user176657

+0

Aggiornato per annidare "in" e usare refid, funziona sul mio sistema. –

5

Che dire qualcosa come:

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

Sembra funzionare per me :-)

+2

Il formato della data richiede una piccola modifica: Quindi ha funzionato per me come previsto. – aerobiotic

Problemi correlati