标题: [文件操作] 批处理自动生成以日期为名的备份文件并删除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
按楼主要求写了一个。借用一下时间函数,不知合不合要求- @echo off
- set filepath=d:\
- set bakpath=d:\bak\
-
- for /f "tokens=1-3 delims=/-.: " %%a in ("%date% %time%") do (
- set "bkfn=%%a%%b%%c"&call :datetodays %%a %%b %%c days
- )
- copy /Y %filepath%1.xls %bakpath%%bkfn%.xls >nul 2>nul&&echo 备份%filepath%1.xls到%bakpath%%bkfn%.xls成功||echo %filepath%1.xls文件不存在
-
- set/a dayo=days-60
-
- for /f "tokens=1-3,6 delims=- " %%i in ('dir/OD %bakpath%*.xls ^| find "xls"') do (
-
- call :datetodays %%i %%j %%k old_d
- if %old_d% lss %dayo% del /Q %bakpath%%%l>nul&&echo 备份文件%bakpath%%%l过期,已被删除
- )
- echo 处理完毕!
-
- pause&goto :eof
-
- :datetodays
- setlocal ENABLEEXTENSIONS
- set yy=%1&set mm=%2&set dd=%3
- set /a dd=100%dd%%%100,mm=100%mm%%%100
- set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
- set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
- endlocal&set %4=%j%&goto :EOF
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |