中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]一个通过判断文件名中日期删除程序遇到问题!
作者:
标题: [求助]一个通过判断文件名中日期删除程序遇到问题! 上一主题 | 下一主题
lee928
初级用户





积分 36
发帖 14
注册 2008-3-5
状态 离线
『楼 主』:  [求助]一个通过判断文件名中日期删除程序遇到问题!

变量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 已删除...
  )
)

2008-3-15 23:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 2 楼』:  

代码自己写吧,给个思路
先截取文件名第四位,如果第4位是0重命名该文件成KHXX10115,再执行删除



第一高手    第二高手

2008-3-16 00:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lee928
初级用户





积分 36
发帖 14
注册 2008-3-5
状态 离线
『第 3 楼』:  

感谢楼上给的思路,没有用改文件名的方法,而是重新获取了一个变量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 已删除...
  )
)

2008-3-16 01:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: