nAnt Удаление файлов старше 7 дней - PullRequest
6 голосов
/ 30 ноября 2009

Я хотел бы создать цель, которая очищает файлы журналов старше 7 дней в определенной папке. Я получаю сообщение об ошибке, когда пытаюсь вставить элемент date в набор файлов. Как я могу пойти по этому поводу?

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

Ответы [ 2 ]

9 голосов
/ 30 ноября 2009

Я не вижу никакой документации по использованию элемента "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>
5 голосов
/ 09 февраля 2011

Как насчет чего-то вроде:

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

Кажется, у меня работает: -)

...