Board logo

标题: [文件操作] 自动创建计划任务之删除7天以前的备份文件批处理 [打印本页]

作者: aizzw    时间: 2009-6-30 17:58     标题: 自动创建计划任务之删除7天以前的备份文件批处理

由于我的公司游戏(露娜luna)服务器太多,之前建立的每日备份日志文件日积月累会 很大。 而且不需要保留那么多,按公司要求只需要保留一个星期的即可。 1.那么有什么方法自动删除7天以前备份的*.log文件呢? 2.服务器过多,不可能一一手动创建,有没有自动完成这个创建计划任务的批处理呢? 首先要解决的是自动删除7天以前备份的log文件,然后创建一个可以自动创建一个每 周指定日期指定时间运行一次该自动删除的批处理 一:删除7天以前备份的文件 命令 FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy-MM-dd | dd}] 方法1: 描述:可以删除7天以前的后缀名为log的日志文件。如今天是6.29,那么会删除6.22 号以前创建的文件。不会删除到回收站。 指定路径为要删除的文件夹路径,该批处理可以放在任意文件夹下。
  1. forfiles /p D:\aizzw\LOG /m *.log -d -7 /c "cmd /c del /f @path"
复制代码
参数解释: 这里的/p 指的是要删除的备份文件路径 /m 指的是要匹配的字符,通配符为*号,后缀名可以根据实际情况修改。 如zzw*.log;*.bak;*.txt -d 指的是日期,“-d -7”指的是从但前日期当前日期往前减7天。 /c 指的是执行命令 @path 返回文件完整路径 方法2: 描述:可以删除7天以前的后缀名为log的日志文件。 不需要指定路径,必须放在要删除日志的文件下。删除当前文件夹下的匹配文件。
  1. forfiles /m *.log -d -7 /c "cmd /c del /f @path"
复制代码
以上批处理已经在windows 2003的虚拟机上测试通过 方法3: 为网友提供,可适用于xp,2000,而forfiles默认只有2003以上的系统才有。
  1. ::删除F:\文件备份里的 7天前的txt文件
  2. ::被删除的文件日期以文件创建日期为主
  3. @echo off
  4. ::取7天之前的日期.
  5. >deldata_zw.zhu.vbs echo wscript.echo dateadd("d",-7,date)
  6. for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo deldata_zw.zhu.vbs') do (
  7. set y=%%i
  8. set m=%%j
  9. set d=%%k
  10. )
  11. if %m% LSS 10 set m=0%m%
  12. if %d% LSS 10 set d=0%d%
  13. set rq=%y%-%m%-%d%
  14. echo 注意:即将删除 %rq% 以前建立的文件
  15. pause
  16. ::判断文件
  17. for /f "skip=4 delims=" %%i in ('dir/tc F:\TEST\*.log') do call :w "%%i"
  18. del deldata_zw.zhu.vbs
  19. goto :eof
  20. :w
  21. for /f "tokens=4 delims= " %%a in (%1) do set str=%%a
  22. set var=%1
  23. set num=%var:~1,10%
  24. if %num% lss %rq% del /q F:\TEST\%str%
复制代码
二:自动创建每周运行一次的计划任务 创建计划任务可用at,schtasks命令,schtasks提供了很多参数 命令schtasks SCHTASKS /Create [/S system [/U username [/P [password]]]] [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day] [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime] [/RI interval] [ {/ET endtime | /DU duration} [/K] ] [/SD startdate] [/ED enddate] [/IT] [/Z] [/F] 方法:
  1. @echo off
  2. schtasks /create /tn "Del-7_log" /ru system /tr D:\aizzw\del-7.bat /sc
  3. weekly /d mon /st 01:00
  4. start %systemroot%\tasks
  5. echo 创建成功,请检查...
  6. pause
  7. del /f Create.bat
复制代码
参数解释: schtasks /create 指的是创建计划任务 /tn 指定计划任务的名称 /ru 指定运行该批处理的账号,如果去掉该参数则默认为当前账户运行,会提示输入密码。 一个计划任务所用的账号如果密码变动后该批处理就不再会运行成功 所以我这里使用系统账号system,密码就省略不写。 /rp 指定账号的密码 /tr 指定程序所在路径,这里为指定要执行的批处理存放路径。 /sc 为指定运行的周期 /d 为日期.这里mon为英文单词缩写,周一 /st 为运行时间 start %systemroot%\tasks 这一句只是为了弹出计划任务窗口查看创建成功与否 del /f Create.bat 为创建完成后自动删除创建该计划任务的批处理 schtasks命令详细解释可以参见微软的 http://technet.microsoft.com/zh-cn/cc772785(WS.10).aspx#BKMK_create 附件中有我实际操作的批处理供下载 本文出自 “aizzw的网络世界” 博客,请务必保留此出处。
作者: ejzhang    时间: 2009-7-1 22:55

又学习了
PS:forfiles.exe拷贝到WindowsXP中也可以用^_^
作者: Batcher    时间: 2009-7-1 23:28

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




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