Board logo

标题: [文件操作] 批处理自动生成以日期为名的备份文件并删除60天之前的文件 [打印本页]

作者: mayi    时间: 2009-4-24 11:52     标题: 批处理自动生成以日期为名的备份文件并删除60天之前的文件

请高手帮我做个批处理文件:

原文件名:d:\1.xls
备份文件地址:d:\bak\

要求:
1. 按执行批处理日期生存备份文件,文件名为:备份当天日期.xls
2. 保存60天的数据。超过60天自动删除旧档案。
3. 同一天执行自动覆盖旧文件。

如备份后文件名应为:
20090424.xls
20090423.xls
......

谢谢啦!
急急
作者: htnet11    时间: 2009-4-24 12:12

这个帖子已经有了,不要重复发同一个问题啊
http://bbs.bathome.net/viewthread.php?tid=4253&page=1#pid27253

[ 本帖最后由 htnet11 于 2009-4-24 12:13 编辑 ]
作者: mayi    时间: 2009-4-24 18:22

谢谢了。当时搜了一下没找着。又急。所以.......
作者: Batcher    时间: 2009-4-24 20:59     标题: 回复 3楼 的帖子

别忙着谢,他给的链接完全解决你的问题了?如果是的话,再谢不迟。
^_^
作者: mayi    时间: 2009-4-27 14:52

真的没有解决我的问题!!

再请高手帮忙啦!!!
作者: inittab    时间: 2009-4-27 16:17

1 3 比较简单,
2涉及时间问题, 比较复杂.
作者: 随风    时间: 2009-4-27 16:51

关于如何获得指定天数前的日期,相关代码以多如牛毛,搜搜看.
作者: inittab    时间: 2009-4-27 19:45     标题: 回复 7楼 的帖子

恩,代码不少。但没有通用性。
跨年,月,日,还要考虑闰年闰月的问题。能实现,但代码量相对不会太少。
作者: Batcher    时间: 2009-4-27 20:02     标题: 回复 8楼 的帖子

没有通用性?你没有仔细搜索吧?

批处理删除指定天数日期之前的文件
http://bbs.bathome.net/thread-3334-1-1.html
作者: inittab    时间: 2009-4-27 22:55

按楼主要求写了一个。借用一下时间函数,不知合不合要求
  1. @echo off
  2. set filepath=d:\
  3. set bakpath=d:\bak\
  4. for /f "tokens=1-3 delims=/-.: " %%a in ("%date% %time%") do (
  5. set "bkfn=%%a%%b%%c"&call :datetodays %%a %%b %%c days
  6. )
  7. copy /Y %filepath%1.xls %bakpath%%bkfn%.xls >nul 2>nul&&echo 备份%filepath%1.xls到%bakpath%%bkfn%.xls成功||echo %filepath%1.xls文件不存在
  8. set/a dayo=days-60
  9. for /f "tokens=1-3,6 delims=- " %%i in ('dir/OD %bakpath%*.xls ^| find "xls"') do (
  10. call :datetodays %%i %%j %%k old_d
  11. if %old_d% lss %dayo% del /Q %bakpath%%%l>nul&&echo 备份文件%bakpath%%%l过期,已被删除
  12. )
  13. echo 处理完毕!
  14. pause&goto :eof
  15. :datetodays
  16. setlocal ENABLEEXTENSIONS
  17. set yy=%1&set mm=%2&set dd=%3
  18. set /a dd=100%dd%%%100,mm=100%mm%%%100
  19. set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
  20. set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
  21. endlocal&set %4=%j%&goto :EOF
复制代码





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