额,按照楼主的思路做了一下。整体思路是这样的:先模拟环境,建一些文件,然后建一个批处理来操作。
先建一个1.txt 文件,内容即为楼主所列的
-rw-rw-rw- 1 user group 173486 Jan 18 20:10 5512_17Dgdaj-xxwj_20100118_1800.bak.zip
-rw-rw-rw- 1 user group 173464 Jan 19 20:10 5512_17Dgdaj-xxwj_20100119_1800.bak.zip
-rw-rw-rw- 1 user group 173487 Jan 20 20:10 5512_17Dgdaj-xxwj_20100120_1800.bak.zip
-rw-rw-rw- 1 user group 173466 Jan 21 20:10 5512_17Dgdaj-xxwj_20100121_1800.bak.zip
-rw-rw-rw- 1 user group 173486 Jan 22 20:10 5512_17Dgdaj-xxwj_20100122_1800.bak.zip
-rw-rw-rw- 1 user group 173467 Jan 23 20:10 5512_17Dgdaj-xxwj_20100123_1800.bak.zip
-rw-rw-rw- 1 user group 173487 Jan 24 20:10 5512_17Dgdaj-xxwj_20100124_1800.bak.zip
-rw-rw-rw- 1 user group 173462 Jan 25 20:10 5512_17Dgdaj-xxwj_20100125_1800.bak.zip
-rw-rw-rw- 1 user group 173482 Jan 26 20:10 5512_17Dgdaj-xxwj_20100126_1800.bak.zip
-rw-rw-rw- 1 user group 173467 Jan 27 20:10 5512_17Dgdaj-xxwj_20100127_1800.bak.zip
-rw-rw-rw- 1 user group 173483 Jan 28 20:10 5512_17Dgdaj-xxwj_20100128_1800.bak.zip
-rw-rw-rw- 1 user group 173454 Jan 29 20:10 5512_17Dgdaj-xxwj_20100129_1800.bak.zip
-rw-rw-rw- 1 user group 173484 Jan 30 20:10 5512_17Dgdaj-xxwj_20100130_1800.bak.zip
-rw-rw-rw- 1 user group 173463 Jan 31 20:10 5512_17Dgdaj-xxwj_20100131_1800.bak.zip
-rw-rw-rw- 1 user group 173481 Feb 1 20:10 5512_17Dgdaj-xxwj_20100201_1800.bak.zip
然后在 1.txt 同目录下建一批处理文件,内容为:- @echo off&setlocal EnableDelayedExpansion
- for /f "tokens=9" %%i in (1.txt) do (echo %%i>>b.txt)
- ::选取文件名列表
- for /f %%i in (b.txt) do (cd.>%%i)
- ::根据上面的文件名列表批量新建文件,作为演示
- del b.txt
- echo 新建演示文件成功
- dir *.zip
- ::删除临时文件b.txt
- for /f "tokens=1-3 delims=-/ " %%a in ('date /t') do set/a date1=%%a*365+%%b*30+%%c
- ::2010*365+02*30+02
- ::获取当前系统时间的数字格式
- ::echo 当前时间值为%date1%
- set/p date2=请设定要删除几天前的记录:
- set/a date3=%date1%-%date2%
- ::echo 之后时间值为%date3%
- for /r %%i in (*.zip) do (
- ::echo %%~nxi
- set var=%%~nxi
- ::echo !var!
- set var1=!var!
- call, set/a var2=%%var1:~18,8%%
- ::echo !var2!
- call, set/a var3=%%var2:~0,4%%*365+%%var2:~4,2%%*30+%%var2:~-2%%
- ::echo !var3!
- if !var3! leq %date3% (del %%i) else echo.
- )
- echo 处理后文件列表:
- dir *.zip
- pause
复制代码 以上代码均做了详细的注释,注一下,我电脑上的日期格式为:复制代码 如果日期格式不同,请自行修改。
运行结果如下(我选择删除3天前记录):- 新建演示文件成功
- 驱动器 D 中的卷是 Windows 2003
- 卷的序列号是 6C8A-606C
-
- D:\我的文档\桌面\新建文件夹 的目录
-
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100118_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100119_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100120_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100121_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100122_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100123_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100124_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100125_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100126_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100127_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100128_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100129_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100130_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100131_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100201_1800.bak.zip
- 15 个文件 0 字节
- 0 个目录 14,049,058,816 可用字节
- 请设定要删除几天前的记录:3
-
-
-
- 处理后文件列表:
- 驱动器 D 中的卷是 Windows 2003
- 卷的序列号是 6C8A-606C
-
- D:\我的文档\桌面\新建文件夹 的目录
-
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100130_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100131_1800.bak.zip
- 2010-02-02 14:00 0 5512_17Dgdaj-xxwj_20100201_1800.bak.zip
- 3 个文件 0 字节
- 0 个目录 14,049,058,816 可用字节
- 请按任意键继续. . .
复制代码 我也是上个星期才接触批处理,这代码感觉写得很臃肿,比如用到var1,var2,var3什么的,可是我不知道怎么去简化代码,请大家帮帮忙,教教我应该如何简化,谢谢了!
注明一下:该方法存在误差,误差天数应该在1天,也就是说,你删除50天前的数据,可能实际上只保留了49天的数据,因为我的天数是按30天来算的,没细想了,我想即使有误差,这点误差也影响不大,呵呵,因为我也经常管理公司数据库的备份 ^_^
[ 本帖最后由 tianya520feng 于 2010-2-2 14:08 编辑 ] |