Board logo

标题: [文件操作] 批处理如何删除7天前的文件 [打印本页]

作者: minmin253    时间: 2009-9-14 18:28     标题: 批处理如何删除7天前的文件

各位大侠,本人有个小小问题请各位赐教,我有一台电脑每天都要做备份,会以文件夹的形式排列,但是由于硬盘内容有限,所以只需保存当天在内的前七天内容,所以我想请问怎样做批处理可以按日期删除当天前第八天内容!

这是每日备份的批处理:
  1. @echo off
  2. set mm=%date:~7,2%
  3. set dd=%date:~4,2%
  4. set yy=%date:~10,4%
  5. md f:\Backup\fobackup\Fo-daily-%mm%-%dd%-%yy%
复制代码
我电脑里的备份依次就是 fo-daily-09-05-2009 fo-daily-09-06-2009 fo-daily-09-07-2009 fo-daily-09-08-2009 fo-daily-09-09-2009 fo-daily-09-10-2009 fo-daily-09-11-2009 fo-daily-09-12-2009

如果今天是9月12号,我就想批处理自动会将9月5号的内容删除!

请问这应该怎么解决?
谢谢!
作者: minmin253    时间: 2009-9-14 19:28

补充一下,在文件里面还有子文件夹 也要一起删除!谢谢!
作者: minmin253    时间: 2009-9-14 20:13

请大家帮帮忙!谢谢!
作者: minmin253    时间: 2009-9-14 20:46

这是我根据网上教程改的,但就是很奇怪 出错了,但是没有任何提示!
请各位告知!

谢谢!
  1. @echo off
  2. set SrcDir=F:\Backup\checkbackup
  3. set DaysAgo=5
  4. forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
  5. pause
复制代码

作者: netbenton    时间: 2009-9-14 20:56

调试成功后把echo rd /q /s前的echo去掉
  1. @echo off
  2. set mm=%date:~7,2%
  3. set dd=%date:~4,2%
  4. set yy=%date:~10,4%
  5. md f:\Backup\fobackup\Fo-daily-%mm%-%dd%-%yy%
  6. ::前面是楼主原来的代码
  7. set file=s_date.txt
  8. if not exist %file% (echo %mm%-%dd%-%yy% >%file%)
  9. set /p s=<%file%
  10. for /f "tokens=1-6*" %%1 in ("%s%") do (
  11.     if "%%1" neq "%mm%-%dd%-%yy%" (
  12.     echo %mm%-%dd%-%yy% %%1 %%2 %%3 %%4 %%5 %%6>%file%
  13.     for %%a in (%%7) do echo rd /q /s "f:\Backup\fobackup\Fo-daily-%%a"
  14.     )
  15. )
复制代码

作者: minmin253    时间: 2009-9-15 19:49

本人想问一下,我把格式改一下,是否还是可以使用?
  1. @echo off
  2. set mm=%date:~7,2%
  3. set dd=%date:~4,2%
  4. set yy=%date:~10,4%
  5. set file=s_date.txt
  6. if not exist %file% (echo %dd%-%mm%-%yy% >%file%)
  7. set /p s=<%file%
  8. for /f "tokens=1-6*" %%1 in ("%s%") do (
  9.     if "%%1" neq "%dd%-%mm%-%yy%" (
  10.     echo %dd%-%mm%-%yy% %%1 %%2 %%3 %%4 %%5 %%6>%file%
  11.     for %%a in (%%7) do echo rd /q /s "f:\Backup\fobackup\Fo-daily-%%a"
  12.     )
  13. )
复制代码
为什么要建立一个txt的文件呢?
  1. @echo off
  2. set SrcDir=F:\Backup\checkbackup
  3. set DaysAgo=7
  4. forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
  5. pause
复制代码
这个批处理可以使用吗?怎样才可以删除里面的子文件夹呢?

问题比较多!谢谢!
作者: Batcher    时间: 2009-9-15 20:19

批处理删除指定天数日期之前的文件
http://bbs.bathome.net/thread-3334-1-1.html

批处理删除指定天数日期之前的文件夹
http://bbs.bathome.net/thread-3503-1-1.html




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2