如何实现指定日期删除指定文件夹下的所有文件

ttanglijun 2011-02-08 09:43:00
Set fso = CreateObject("Scripting.FileSystemObject")
Value = "2,8,21,38" '月,日,时,分
Path = "C:\清理\*.*"
On Error Resume Next
Do
If DatePart("m",Now)&","&DatePart("d",Now)&","&DatePart("h",Now)&","&DatePart("n",Now)=Value Then
fso.DeleteFile Path,True:Exit Do
End If
WSH.Sleep 100
Loop


这个脚本只能删除清理目录下的文件,却不能删除清理目录下子文件夹里的文件。
请问如何才能实现,指定日期和指定时间倒是实现了。
这是网上摘录下来的,我不太清楚,顾此一问。
...全文
516 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dianyancao 的回复:]
Young做VB脚本挺快的,呵呵
[/Quote]

下午都写好了的,等着楼主下指令呢,呵呵
dianyancao 2011-02-10
  • 打赏
  • 举报
回复
Young做VB脚本挺快的,呵呵
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
门外汉就好,门外汉好糊弄,嘿嘿

不过还是给你加上点注释,看得清楚些。


'枚举删除多级路径下的文件 - Forever_Young
On Error Resume Next

WorkPath="c:\清理" '这里把需要操作的路径赋值给变量WorkPath
DefTime="2-10-10-10" '这里定时 - 格式为“月-日-时-分”

while nowtime<>deftime '这里开始条件循环,如果条件符合就中止循环
nowtime=datepart("m",now)&"-"&datepart("d",now)&"-"&datepart("h",now)&"-"&datepart("n",now) '获取当前时间
wscript.sleep 30000 '延时30秒
wend

Call DelAllFiles(WorkPath) '开始调用删除过程

'枚举并删除文件
Sub DelAllFiles(sPath)
set fs = CreateObject("Scripting.FileSystemObject")
set folder = fs.GetFolder(sPath)
fs.deletefile folder.path&"\*.*",true
For each item in folder.SubFolders
DelAllFiles(item.Path)
Next
set folder = Nothing
set fs = Nothing
End Sub
Ghostbaby 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 guyawansong 的回复:]

回复于:2011-02-09 02:14:05
羊老师好敬业。。
学习中。。
[/Quote]

必须的膜拜~
Ghostbaby 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ttanglijun 的回复:]

引用 5 楼 forever_young 的回复:
引用 4 楼 ttanglijun 的回复:
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。


这个需要写个sub过程然后反复的call传递参数给FileSystemObject对象的sub……
[/Quote]

将批处理转换成EXE 然后注册成服务 同样可以后台运行的
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ttanglijun 的回复:]
呵,结贴了,不过还有个小问题,如果是每个月的某天都执行删除的动作。
时间的判断该怎么写呢。呵呵,很贪心哦。
[/Quote]

两个办法,1、让脚本长时间运行不退出,2、使用计划任务,看你拿这个脚本来干吗了,如果就是普通的清理,那就最好是第2种
Forever_Young 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 ttanglijun 的回复:]
还有就是,如果我把3000改成100 会有什么后果。嘿嘿。
[/Quote]

改成100,你的CPU使用率持续时间会很高,如果以分钟为判断,没必要设置那么短。
ttanglijun 2011-02-10
  • 打赏
  • 举报
回复
还有就是,如果我把3000改成100 会有什么后果。嘿嘿。
ttanglijun 2011-02-10
  • 打赏
  • 举报
回复
呵,结贴了,不过还有个小问题,如果是每个月的某天都执行删除的动作。
时间的判断该怎么写呢。呵呵,很贪心哦。
ttanglijun 2011-02-10
  • 打赏
  • 举报
回复
谢谢羊老师。呵呵,真有用。太谢谢了。
Ghostbaby 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 forever_young 的回复:]

引用 16 楼 ttanglijun 的回复:
呵,结贴了,不过还有个小问题,如果是每个月的某天都执行删除的动作。
时间的判断该怎么写呢。呵呵,很贪心哦。


两个办法,1、让脚本长时间运行不退出,2、使用计划任务,看你拿这个脚本来干吗了,如果就是普通的清理,那就最好是第2种
[/Quote]

计划任务确实很好用
ttanglijun 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 forever_young 的回复:]
引用 4 楼 ttanglijun 的回复:
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。


这个需要写个sub过程然后反复的call传递参数给FileSystemObject对象的subfolders,这样就会形成枚举,另外你的思路有些僵化,……
[/Quote]

呵,我是门外汉,干脆给我修改下。写出来吧。呵呵。
至于楼上说用bat,不能后台运行。所以感觉不好。
古井荡月 2011-02-09
  • 打赏
  • 举报
回复
回复于:2011-02-09 02:14:05
羊老师好敬业。。
学习中。。
紫郢剑侠 2011-02-09
  • 打赏
  • 举报
回复
这个用计划任务+bat更容易实现罢

指定日期和时间 --可以用计划任务


删除清理目录下子文件夹里的文件 --在bat文件里用del命令就行了
Forever_Young 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ttanglijun 的回复:]
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
[/Quote]

这个需要写个sub过程然后反复的call传递参数给FileSystemObject对象的subfolders,这样就会形成枚举,另外你的思路有些僵化,呵呵。因为你的最小分辨时间为分钟,那为啥sleep100毫秒呢,嫌CPU太闲了,完全可以设成sleep30000毫秒,这样系统开销就小多了。

今天太晚了,明天你再写不出来,我就给你写个,呵呵。
ttanglijun 2011-02-09
  • 打赏
  • 举报
回复
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
Forever_Young 2011-02-08
  • 打赏
  • 举报
回复
这脚本不就是用datepart来得到日期时间元素组合成的字符串,对比value,如果等于就删文件然后退出,如果不等于继续loop

datepart的元素有(假设给定日期是now,也就是当天)

m = 返回月
d = 返回今天是一个月中的第几日
h = 返回当前的小时
n = 返回当前的分

除此之外还有

yyyy = 返回年
y = 返回今天是一年中的第几天
q = 返回今天是第几个季度
s = 返回秒
w = 返回是一个星期中的第几日,这里要注意,默认是周日开始计算,比如周二会返回3
ww = 返回一年中的第几个星期

脚本中其他的,也没什么好解释的了

你如果用这个脚本删除多个文件夹下的文件,可以把fso.DeleteFile Path,True这一行后添加几行就行

如果想枚举一个文件夹下的N层子目录进行删除,可以办到,但是这个脚本还差远了,呵呵.
ttanglijun 2011-02-08
  • 打赏
  • 举报
回复
或者说在一个脚本里,能不能删除多个文件夹下的文件呢,它们并不是同一个目录。
我对这类代码不太了解,还望前辈们详细的说明。
ttanglijun 2011-02-08
  • 打赏
  • 举报
回复
在XP下测试过,对日期和时间的判断很准确,只是只读文件不能删除。
只能删除目录下的文件,不能删除目录下子文件夹里的文件。

9,506

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧