标题: [文件操作] 如何删除历史文件,但是保留每天的最后一个文件? [打印本页]
作者: allen3371 时间: 2017-6-15 09:04 标题: 如何删除历史文件,但是保留每天的最后一个文件?
本帖最后由 allen3371 于 2017-6-15 09:05 编辑
文件名如下 myfile_backup_2017_06_15_080006_3688048
类似的文件,每个小时备份一次,每天有10个文件,现在要删除昨天之前的,历史文件,但是,每天要保留最后一次备份的文件
感觉这个功能挺难实现的..
作者: hlzj88 时间: 2017-6-15 23:30
难是不难,只是你这问题说的不清楚,是多少天的备份都在一个文件夹里,还是每天一个文件夹,文件命名都类似,但,具体区别在什么地方,命名的特点是什么。都是作为删除文件的依据。因为执行删除,不可没有把握来做。
每小时备份一次,,但却只有10个文件,说的不通。如果有对应时间关系,假设是晚上11点也备份,可以直接删除前面时间特点的文件。如果文件个数不确定,要先得到当天的总数,删除n-1。都在一个文件里,要考虑保留前面日期的,不在就无需考虑。
作者: cfwyy77_bat 时间: 2017-6-15 23:32
本帖最后由 cfwyy77_bat 于 2017-6-16 08:24 编辑
应该不难的吧 我的想法是 按文件的生成或修改时间,确定最新时间的文件,删除其它非最新的即可。
简单写了一下:- @echo off
- setlocal enabledelayedexpansion
- set latestTime="0"
- for /f "tokens=1,2" %%a in ('dir myfile* /tc ^| find "myfile"') do (
- set createtime="%%a %%b"
- if /i !createtime! GTR !latestTime! (set latestTime=!createtime!)
- )
- for /f "tokens=1,2,4" %%a in ('dir myfile* /tc ^| find "myfile"') do (
- set createtime="%%a %%b"
- set fname=%%c
- if /i !createtime! NEQ !latestTime! del /f /q !fname!
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |