[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何删除历史文件,但是保留每天的最后一个文件?

本帖最后由 allen3371 于 2017-6-15 09:05 编辑

文件名如下 myfile_backup_2017_06_15_080006_3688048

类似的文件,每个小时备份一次,每天有10个文件,现在要删除昨天之前的,历史文件,但是,每天要保留最后一次备份的文件

感觉这个功能挺难实现的..

难是不难,只是你这问题说的不清楚,是多少天的备份都在一个文件夹里,还是每天一个文件夹,文件命名都类似,但,具体区别在什么地方,命名的特点是什么。都是作为删除文件的依据。因为执行删除,不可没有把握来做。
每小时备份一次,,但却只有10个文件,说的不通。如果有对应时间关系,假设是晚上11点也备份,可以直接删除前面时间特点的文件。如果文件个数不确定,要先得到当天的总数,删除n-1。都在一个文件里,要考虑保留前面日期的,不在就无需考虑。
目的,学习批处理

TOP

本帖最后由 cfwyy77_bat 于 2017-6-16 08:24 编辑

应该不难的吧   我的想法是 按文件的生成或修改时间,确定最新时间的文件,删除其它非最新的即可。
简单写了一下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set latestTime="0"
  4. for /f "tokens=1,2" %%a in ('dir myfile* /tc ^| find "myfile"') do (
  5. set createtime="%%a %%b"
  6. if /i !createtime! GTR !latestTime! (set latestTime=!createtime!)
  7. )
  8. for /f "tokens=1,2,4" %%a in ('dir myfile* /tc ^| find "myfile"') do (
  9. set createtime="%%a %%b"
  10. set fname=%%c
  11. if /i !createtime! NEQ !latestTime! del /f /q !fname!
  12. )
  13. pause
复制代码

TOP

返回列表