nAnt删除超过7天的文件

use*_*657 6 nant fileset delete-file

我想创建一个目标,清除特定文件夹中7天以前的日志文件.当我尝试在文件集中放入"日期"元素时,我收到错误.我怎么能这样做?

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

Jef*_*ent 9

我没有看到任何使用"date"元素的文档.你可能会考虑这样的事情:

<fileset id="thelogs" basedir="${StageIISRoot}/MySite/App_Data/ErrorLog">
    <include name="*.xml" />
</fileset>
Run Code Online (Sandbox Code Playgroud)

然后在循环中引用该文件集,该循环检查文件日期并删除:

<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>
Run Code Online (Sandbox Code Playgroud)


小智 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>
Run Code Online (Sandbox Code Playgroud)

它似乎对我有用:-)

  • 日期格式需要一个小的改动:<format property ="last.week"pattern ="MM/dd/yyyy hh:mm aa"offset =" - 7"unit ="day"/>然后它按预期对我有效. (2认同)