一、背景
为了保险起见,生产项目中经常使用到了备份,但备份有的没有删除功能比如mysql的定时备份,数据库数据量非常大的时候,备份不删除就会造成磁盘不够用,备份数据数据覆盖等等问题,因此需要使用脚本来定时删除几天前的文件

二、具体命令

例如删除E:sqlback目录下(包括子目录)所有以.bak为后缀的、最后修改时间为7天前的文件

指令: 

     forfiles /p E:sqlback  /s /m *.bak -d -7 /c "cmd /c del /f @path"

解释:

/p   - 指定的路径 
/s   -  包括子目录 
/m  - 查找的文件名,支持通配符*。
/d   - 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前   
/c   - 运行的命令行   表示为每个文件执行的命令。命令字符串应该
                        用双引号括起来。

默认命令是 "cmd /c echo @file"。下列变量可以用在命令字符串中:

@file    - 返回文件名。
@fname   - 返回不带扩展名的文件名。
 @ext     - 只返回文件的扩展。
 @path    - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir   - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
 @fsize   - 以字节为单位返回文件大小。
@fdate   - 返回文件上一次修改的日期。
 @ftime   - 返回文件上一次修改的时间。

三、设置为定时任务
编辑好要执行的bat脚本,再设置为定时任务,设置定时任务比较简单,具体的见下面链接

https://blog.csdn.net/u014180504/article/details/79804891

注意:一定要在测试环境多测试,确认正确性后才移植到生产环境,并且上线后在window的定时任务中隔一段时间观察下脚本的执行情况