标题: [求助]一个通过判断文件名中日期删除程序遇到问题!
[打印本页]
作者: lee928
时间: 2008-3-15 23:59
标题: [求助]一个通过判断文件名中日期删除程序遇到问题!
变量MMDD是通过VBS脚本获取的日期,是当前日期减去7天后的日期,比如今天是表3月15日,变量MMDD值就是0308。程序通过这样来处理删除一周前的文件。目标盘上需要处理的文件都是??XXMMDD.TXT格式,比如KHXX0315.TXT
程序通过for 语句判断dir列出的需要处理的文件名中的日期是否小于变量MMDD数值,如果小于则表示该文件可以删除。
现在有个问题就是,文件名中的日期代码只有月日,这样下来如果遇到12月31日这样的日期,产生的的文件名就会是KHXX1231.TXT,而跨年后获得的日期例如0115,1月15日,虽然KHXX1231.TXT已经是一周之前的旧文件了,但IF判断时1231比要删除日期的0115要大,请教论坛中的高手怎样解决像这样的情况呢?
(注:因文件建立日期有可能和文件名中的日期不符,所以只能通过文件名中日期进行判断)
FOR /F "DELIMS=" %%I IN ('DIR /A-D /B D:\??XX????.TXT') DO (
@SET FNAME=%%~NI
IF !FNAME:~-4! LSS %MMDD% (
@ECHO DEL %FRQS%\%%~NXI >NUL
@ECHO 文件 %FRQS%\%%~NXI 已删除...
)
)
作者: fastslz
时间: 2008-3-16 00:44
代码自己写吧,给个思路
先截取文件名第四位,如果第4位是0重命名该文件成KHXX10115,再执行删除
作者: lee928
时间: 2008-3-16 01:14
感谢楼上给的思路,没有用改文件名的方法,而是重新获取了一个变量M为当前月份,判断如果当前月为1-9,则在比较变量前加1,即(0315变为10315),如果是10-12月则在比较变量前加0,即(1231变为01231),这样跨年没有问题了,2008年的KHXX1231.TXT比较时变成了(01231),在2009年1月15日(10115)日就会被判断为过期文件进行删除。
但是又产生了新问题,就是10月执行删除9月文件时又遇到和跨年同样的问题了。
IF /I "%M:~0,1%"=="0" SET XMMDD=1%MMDD% ELSE XMMDD=0%MMDD%
FOR /F "DELIMS=" %%I IN ('DIR /A-D /B %FRQS%\??XX????.TXT') DO (
@SET FNAME=%%~NI
IF /I "!FNAME:~-4,1!"=="0" SET FNAME=1!FNAME:~-4! ELSE SET FNAME=0!FNAME:~-4!
IF !FNAME! LSS %XMMDD% (
@ECHO DEL %FRQS%\%%~NXI >NUL
@ECHO 文件 %FRQS%\%%~NXI 已删除...
)
)