中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 06:56
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 批处理获取当前日期,删除指定文件夹
可打印版本  2,082 / 6
第1楼 skypn520 发表于 2009-01-16 18:42
新手上路 发帖 5 积分 9
批处理获取当前日期,删除指定文件夹
各位大大好,我是一个刚入门的小菜。想请教一个关于获取当前日期,然后删除指定文件夹里面的文件的批处理或者各位大大帮我写一个。
问题是这样的:
我们在使用一款监控软件,这款软件每天会在指定的文件夹里生成一个由当天日期命名的文件夹(假如今天是16号,则会生成一个名位16的文件夹)存放当天的采集视频,由于我的硬盘只有120G,每次采集个两三天就得手动删除一下。很烦琐,所以我想写一个批处理,获取当前日期,删除除了当前日期之前的所有文件夹(由数字00-31命名的文件夹),我的批处理能力还只是入门不到。所以想请各位大大能帮忙写一个。。。
在下先谢过了。





———————————————————————
转移自 DOS学习入门 & 精彩文章 (教学室)
今后发帖请尽量发到对应的版块。
——管理员
———————————————————————
第2楼 skypn520 发表于 2009-01-17 19:35
新手上路 发帖 5 积分 9
贴子发了一天了,那么多人看,就没有一个人肯帮帮忙的吗???
第3楼 huangshuirun 发表于 2009-06-21 12:30
初级用户 发帖 61 积分 65
rem 指定待删除文件的存放路径
set SrcDir=D:\opsys\model_def
rem 指定待删除文件日期
set DaysAgo=3

forfiles /p %SrcDir% /s /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
pause
第4楼 Hanyeguxing 发表于 2009-06-22 03:36
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂


既然按日期生成文件夹名,那么就不会有00这个日期。你说有了,就按有的写吧。。。
这个批处理中有3个注意的问题:
1,因为由for /l得到的数字中,1到9是1位的,10到31是两位,为了得到01-09,10-31,需要将for /l后的数字前面加0,然后截取后两位,即得到01-31。
2,以为在for /l的终止数字中,不能使用0开头的数字,例如for /l %%i in (1 1 09) do (。。。
而直接截取%date%变量,得到的数字可能前面带0,所以必须使用if进行判断,根据不同的情况进行截取。
3,日期变量的截取是根据如示例2009-06-22 星期一的%date%进行截取的

[ Last edited by Hanyeguxing on 2009-6-22 at 11:39 ]
第5楼 jyssysz 发表于 2009-06-22 05:45
中级用户 发帖 50 积分 343
多潜水,多看贴子!!!
第6楼 wishpopo 发表于 2009-06-22 08:59
新手上路 发帖 20 积分 18
你可以用 %date:~5,5% 获取文件夹名字
用if 判断去删除文件夹
第7楼 Hanyeguxing 发表于 2009-06-22 11:58
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
只有当指定的文件夹中只含有子文件夹名都是由数字构成,且都是两位数字的时候,可以使用这个:



[ Last edited by Hanyeguxing on 2009-6-22 at 12:04 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023