![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 19:02 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]一个通过判断文件名中日期删除程序遇到问题! |
| 可打印版本 781 / 2 |
| 第1楼 lee928 | 发表于 2008-03-15 23:59 |
| 初级用户 发帖 14 积分 36 | |
|
[求助]一个通过判断文件名中日期删除程序遇到问题! 变量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 已删除... ) ) |
|
| 第2楼 fastslz | 发表于 2008-03-16 00:44 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
代码自己写吧,给个思路
先截取文件名第四位,如果第4位是0重命名该文件成KHXX10115,再执行删除 |
|
| 第3楼 lee928 | 发表于 2008-03-16 01:14 |
| 初级用户 发帖 14 积分 36 | |
|
感谢楼上给的思路,没有用改文件名的方法,而是重新获取了一个变量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 已删除... ) ) |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |