| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2875 人关注过本帖
标题:100分求批量删除指定子文件夹的DOS命令
取消只看楼主 加入收藏
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:6 
100分求批量删除指定子文件夹的DOS命令
在服务器建了个批处理文件定期备份论坛的数据库,保存到 G:\论坛数据库 ,以 数据库备份_20091024 这种格式按日期备份,每5天备份一次,如下图所示
图片附件: 游客没有浏览图片的权限,请 登录注册


备份的DOS命令已经有了,现在的难题是怎么删除30天前备份的文件夹
尝试过下面的代码
forfiles /p "G:\论坛数据库" /s /m *.* /d -30 /c "cmd /c del @path"
达不到要求,只能删除30天前的文件,并且有些备份文件的修改日期被复制过来以后还是几个月以前的,不该删除的都删除了。

老静对DOS命令不熟悉,请各位高手支招
搜索更多相关主题的帖子: 文件 删除 命令 批量 DOS 
2009-10-24 16:28
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
动用一下私权全局置顶,请大家见谅,问题解决后即取消置顶。

畅所欲言
2009-10-24 16:30
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
回复 3楼 aspic
谢谢提供这么详细的方案,貌似只有第四个方案是根据文件的创建时间判断的,其他的根据修改时间判断的,很多文件备份以后修改时间还是被复制文件的修改时间,这样会删除新备份的文件。另外是需要删除30天前的文件夹及其里面的文件,而不是删除30天前的文件,也就是说只要判断形如 数据库备份_20090924 这一层的文件夹就可以了,不需要判断里面的子文件夹。

畅所欲言
2009-10-24 18:32
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
以下是引用forever74在2009-10-24 18:12:59的发言:

这么具体的问题,根本不用考虑通用性,我倾向于C语言写个exe,执行之。
如果用DOS命令实在没有合适的方案,就用程序了。主要是考虑DOS更方便一些,只一个文件,也不用编译

畅所欲言
2009-10-24 18:35
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
以下是引用wokaokeji0在2009-10-24 18:22:04的发言:

LZ 能不能分享一下备份的批处理程序
程序代码:
echo off

net stop mysql

set fromdir=G:\Program Files\mysql\data\bccn
set todir=G:\论坛数据库\
set mydir=%todir%mysql_data_%date:~0,4%%date:~5,2%%date:~8,2%
md %mydir%
xcopy %fromdir%\* %mydir% /e

net start mysql

G:\Program Files\mysql\data\bccn 和 G:\论坛数据库\ 分别为备份的源路径和目标路径。
代码中的路径只是示例

畅所欲言
2009-10-24 18:40
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
以下是引用wokaokeji0在2009-10-24 18:44:40的发言:

我到有个想法  
1.用 dir /b>>tem.txt
 
然后用for 循环
    2.处理tem.txt中的后几位字符
    3.和当前日期比较
4.删除
 
 
不可是否可行
我也是这么想的,遍历子文件夹,然后根据文件夹名判断删除,具体怎么实现不会啊

畅所欲言
2009-10-24 18:47
静夜思
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:济南的冬天
等 级:管理员
威 望:11
帖 子:8902
专家分:2567
注 册:2004-3-25
收藏
得分:0 
结贴了,谢谢大家回复,最佳答案在21楼
14楼可能理解错我的意思了,这个批处理文件是需要计划任务自动执行的,所以日期就是取系统当前日期做对比,不是需要手动输入的。

畅所欲言
2009-10-26 13:34
快速回复:100分求批量删除指定子文件夹的DOS命令
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014229 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved