中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何删除指定目录里,一个礼拜以前的文件。
« [1] [2] »
作者:
标题: 如何删除指定目录里,一个礼拜以前的文件。 上一主题 | 下一主题
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『楼 主』:  如何删除指定目录里,一个礼拜以前的文件。

我原来用这个命令,来保留最近7个备份,但对archivelog,则用不了,因为我不知道每天产生的文件数目。
for /f "skip=7" %%i in ('dir F:\mybackup\*.dmp /tc /o-d /b') do del %%i  
我希望达到的目的是,每天删除过期的archivelog,使当前目录里的archivelog文件只保留一个礼拜以内生成的。
请给几句关键的命令,谢谢。



———————————————————————
转移自 DOS疑难解答 & 问题讨论 (解答室)
今后发帖请尽量发到对应的版块。
——管理员
———————————————————————


2009-2-24 12:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

这个不是几个命令能搞定的,需要一大段代码。
可以到批处理室搜索“删除N天以前的文”



2009-2-24 16:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 3 楼』:  

谢谢,我去翻一下

2009-2-24 17:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 4 楼』:  

看过了,发现论坛里牛人真多,不得不拜一下。但那个set /a的算法,看的我有点晕,我要好好理解下。
我记得以前看过一个用VBS 的 dateadd做的脚本,这里有吗,给个链接吧。
谢谢

2009-2-24 17:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  Re 4楼

调用VBS进行日期计算确实比较简单,在VBS帮助手册里面搜索一下data相关的函数,自己就能写出来,不必参考别人的代码。



2009-2-24 19:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Michael
钻石会员





积分 10046
发帖 3039
注册 2002-11-11
状态 离线
『第 6 楼』:  

我也写过一个,不过有一次,单位放假,服务器7天没开,结果一运行脚本,只剩一个备份了。所以,保留最近7个,不能单单以日期判断!

[ Last edited by Michael on 2009-2-24 at 20:20 ]



简单就是美
2009-2-24 20:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 7 楼』:  

保留最近7个的备份,还是用我上面的那个命令比较好,不容易误删

2009-2-25 12:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  



  Quote:
但对archivelog,则用不了,因为我不知道每天产生的文件数目。

具体问题具体分析吧
不管怎样
要放在服务器上代码还是考虑全面一些好



2009-2-25 12:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 9 楼』:  

没人给我答案,只能自力更生了.参考了点代码,写了两个批处理.一个在xp下运行,一个在windows2000下运行.



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-26 09:54
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 10 楼』:  

在xp下运行

@echo off
setlocal enabledelayedexpansion
mshta vbscript:createobject("scripting.filesystemobject").opentextfile("outputdate",2,true).writeline(dateadd("d",-7,"%date:~0,10%"))(window.close)
for /f "tokens=1-3 delims=- " %%1 in (outputdate) do (set y=%%1
if %%2 leq 9 (set m=0%%2)else set m=%%2
if %%3 leq 9 (set d=0%%3)else set d=%%3)
del=outputdate& set lastdate=%y%-%m%-%d%
for %%1 in (c:\a\*)do (set createdate=%%~t1
set createdate=!createdate:~0,10!
if !createdate! lss !lastdate!  del /a /f "%%~1")



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-26 09:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 11 楼』:  

在windows2000下运行

@echo off
setlocal enabledelayedexpansion
mshta vbscript:createobject("scripting.filesystemobject").opentextfile
("outputdate",2,true).writeline(dateadd("d",-7,"%date:~4,10%"))
(window.close)
for /f "tokens=1" %%1 in (outputdate) do (set lastdate=%%1)
del=outputdate& set lastdate=%lastdate:~2,8%
for %%1 in (c:\a\*)do (set createdate=%%~t1
set createdate=!createdate:~0,8!
if !createdate! lss !lastdate!  del /a /f "%%~1")



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-26 09:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 12 楼』:  

分为两个批处理的原因是,在两种系统下,%date:~0,10%的格式不一样,%%~t1的格式也不一样,dateadd出来的结果也不同.

哪位能告诉我,怎么才能把两个系统的date格式调一致,我调整了windows区域管理里的日期格式,发现没有任何用处.

谢谢



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-26 10:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  Re 12楼

批处理标准化获取当前系统日期
http://www.cn-dos.net/forum/viewthread.php?tid=41857



2009-2-26 11:53
查看资料  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by HAT at 2009-2-26 11:53:
批处理标准化获取当前系统日期
http://www.cn-dos.net/forum/viewthread.php?tid=41857

谢谢,马上去看下



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-26 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
holyunicorn
初级用户

每天进步一点点



积分 24
发帖 14
注册 2009-2-19
状态 离线
『第 15 楼』:  

呵呵,又学到点东西,原来还可以这样做,不过为了获得标准日期,竟然每取一次日期,就要修改2次注册表。最后那个更厉害,直接用debug,我前天就是想用debug生成一个关于日期的com程序,结果把cmd给搞乱了。这样做,我觉得危险系数还是蛮大的。



为什么我不懂的始终比懂得多,苦恼啊!
2009-2-27 00:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: