中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 批处理获取当前日期,删除指定文件夹
作者:
标题: 批处理获取当前日期,删除指定文件夹 上一主题 | 下一主题
skypn520
新手上路





积分 9
发帖 5
注册 2008-12-17
状态 离线
『楼 主』:  批处理获取当前日期,删除指定文件夹

各位大大好,我是一个刚入门的小菜。想请教一个关于获取当前日期,然后删除指定文件夹里面的文件的批处理或者各位大大帮我写一个。
问题是这样的:
我们在使用一款监控软件,这款软件每天会在指定的文件夹里生成一个由当天日期命名的文件夹(假如今天是16号,则会生成一个名位16的文件夹)存放当天的采集视频,由于我的硬盘只有120G,每次采集个两三天就得手动删除一下。很烦琐,所以我想写一个批处理,获取当前日期,删除除了当前日期之前的所有文件夹(由数字00-31命名的文件夹),我的批处理能力还只是入门不到。所以想请各位大大能帮忙写一个。。。
在下先谢过了。





———————————————————————
转移自 DOS学习入门 & 精彩文章 (教学室)
今后发帖请尽量发到对应的版块。
——管理员
———————————————————————


2009-1-16 18:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
skypn520
新手上路





积分 9
发帖 5
注册 2008-12-17
状态 离线
『第 2 楼』:  

贴子发了一天了,那么多人看,就没有一个人肯帮帮忙的吗???

2009-1-17 19:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huangshuirun
初级用户





积分 65
发帖 61
注册 2009-6-15
状态 离线
『第 3 楼』:  

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

2009-6-21 12:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 4 楼』:  


@echo off&SETLOCAL ENABLEDELAYEDEXPANSION
::设置要检查的文件夹路径为变量han,路径最后面不要有\
set han=D:\bak
::请确认日期格式是否如示例2009-06-22 星期一
echo %date%
pause
::判断日期是否小于10
if "%date:~8,2%" LSS "10" (set gu=%date:~9,1%) else set gu=%date:~8,2%
::获取文件夹名
for /l %%i in (1 1 %gu%) do (
        set /a ye=%%i-1
        set ye=0!ye!
        rmdir "!han!\!ye:~-2!" /s /q>nul 2>nul
)
既然按日期生成文件夹名,那么就不会有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 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-6-22 03:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jyssysz
中级用户




积分 343
发帖 50
注册 2004-2-21
状态 离线
『第 5 楼』:  

多潜水,多看贴子!!!

2009-6-22 05:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wishpopo
新手上路





积分 18
发帖 20
注册 2008-10-28
状态 离线
『第 6 楼』:  

你可以用 %date:~5,5% 获取文件夹名字
用if 判断去删除文件夹

2009-6-22 08:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Hanyeguxing
银牌会员

正在学习中的菜鸟...


积分 1039
发帖 897
注册 2009-3-1
来自 在地狱中仰望天堂
状态 离线
『第 7 楼』:  

只有当指定的文件夹中只含有子文件夹名都是由数字构成,且都是两位数字的时候,可以使用这个:
@echo off&setlocal enabledelayedexpansion
::设置要检查的文件夹路径为变量han,路径最后面不要有\
set han=D:\bak
::请确认日期格式是否如示例2009-06-22 星期一
echo %date%
pause
for /f "delims=" %%i in ('dir "%han%" /b /s /a:d') DO (
set ye=%%i
if "!ye:~-2!" LSS "!date:~8,2!" rmdir "!ye!" /s /q>nul 2>nul
)
[ Last edited by Hanyeguxing on 2009-6-22 at 12:04 ]



批处理之家 http://bbs.bathome.net/forum-5-1.html
2009-6-22 11:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: