nAnt删除7天前的文件

6

我想创建一个目标,用于清理特定文件夹中7天前的日志文件。当我尝试在fileset中放置一个“日期”元素时,出现错误。我该如何解决这个问题?

<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
我没有看到任何有关使用“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>

我收到一个错误,说“源目录MYPATH/thelogs不存在”。 - user176657

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
日期格式需要做出小的更改:<format property="last.week" pattern="MM/dd/yyyy hh:mm aa" offset="-7" unit="day"/> 然后它按照我的预期工作了。 - aerobiotic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接