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
这个脚本只能删除清理目录下的文件,却不能删除清理目录下子文件夹里的文件。
请问如何才能实现,指定日期和指定时间倒是实现了。
这是网上摘录下来的,我不太清楚,顾此一问。
20 个解决方案
#1
在XP下测试过,对日期和时间的判断很准确,只是只读文件不能删除。
只能删除目录下的文件,不能删除目录下子文件夹里的文件。
只能删除目录下的文件,不能删除目录下子文件夹里的文件。
#2
或者说在一个脚本里,能不能删除多个文件夹下的文件呢,它们并不是同一个目录。
我对这类代码不太了解,还望前辈们详细的说明。
我对这类代码不太了解,还望前辈们详细的说明。
#3
这脚本不就是用datepart来得到日期时间元素组合成的字符串,对比value,如果等于就删文件然后退出,如果不等于继续loop
datepart的元素有(假设给定日期是now,也就是当天)
m = 返回月
d = 返回今天是一个月中的第几日
h = 返回当前的小时
n = 返回当前的分
除此之外还有
yyyy = 返回年
y = 返回今天是一年中的第几天
q = 返回今天是第几个季度
s = 返回秒
w = 返回是一个星期中的第几日,这里要注意,默认是周日开始计算,比如周二会返回3
ww = 返回一年中的第几个星期
脚本中其他的,也没什么好解释的了
你如果用这个脚本删除多个文件夹下的文件,可以把fso.DeleteFile Path,True这一行后添加几行就行
如果想枚举一个文件夹下的N层子目录进行删除,可以办到,但是这个脚本还差远了,呵呵.
datepart的元素有(假设给定日期是now,也就是当天)
m = 返回月
d = 返回今天是一个月中的第几日
h = 返回当前的小时
n = 返回当前的分
除此之外还有
yyyy = 返回年
y = 返回今天是一年中的第几天
q = 返回今天是第几个季度
s = 返回秒
w = 返回是一个星期中的第几日,这里要注意,默认是周日开始计算,比如周二会返回3
ww = 返回一年中的第几个星期
脚本中其他的,也没什么好解释的了
你如果用这个脚本删除多个文件夹下的文件,可以把fso.DeleteFile Path,True这一行后添加几行就行
如果想枚举一个文件夹下的N层子目录进行删除,可以办到,但是这个脚本还差远了,呵呵.
#4
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
#5
这个需要写个sub过程然后反复的call传递参数给FileSystemObject对象的subfolders,这样就会形成枚举,另外你的思路有些僵化,呵呵。因为你的最小分辨时间为分钟,那为啥sleep100毫秒呢,嫌CPU太闲了,完全可以设成sleep30000毫秒,这样系统开销就小多了。
今天太晚了,明天你再写不出来,我就给你写个,呵呵。
#6
回复于:2011-02-09 02:14:05
羊老师好敬业。。
学习中。。
羊老师好敬业。。
学习中。。
#7
这个用计划任务+bat更容易实现罢
指定日期和时间 --可以用计划任务
删除清理目录下子文件夹里的文件 --在bat文件里用del命令就行了
指定日期和时间 --可以用计划任务
删除清理目录下子文件夹里的文件 --在bat文件里用del命令就行了
#8
呵,我是门外汉,干脆给我修改下。写出来吧。呵呵。
至于楼上说用bat,不能后台运行。所以感觉不好。
#9
将批处理转换成EXE 然后注册成服务 同样可以后台运行的
#10
必须的膜拜~
#11
门外汉就好,门外汉好糊弄,嘿嘿
不过还是给你加上点注释,看得清楚些。
不过还是给你加上点注释,看得清楚些。
'枚举删除多级路径下的文件 - 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
#12
Young做VB脚本挺快的,呵呵
#13
下午都写好了的,等着楼主下指令呢,呵呵
#14
谢谢羊老师。呵呵,真有用。太谢谢了。
#15
呵,结贴了,不过还有个小问题,如果是每个月的某天都执行删除的动作。
时间的判断该怎么写呢。呵呵,很贪心哦。
时间的判断该怎么写呢。呵呵,很贪心哦。
#16
还有就是,如果我把3000改成100 会有什么后果。嘿嘿。
#17
改成100,你的CPU使用率持续时间会很高,如果以分钟为判断,没必要设置那么短。
#18
两个办法,1、让脚本长时间运行不退出,2、使用计划任务,看你拿这个脚本来干吗了,如果就是普通的清理,那就最好是第2种
#19
计划任务确实很好用
#1
在XP下测试过,对日期和时间的判断很准确,只是只读文件不能删除。
只能删除目录下的文件,不能删除目录下子文件夹里的文件。
只能删除目录下的文件,不能删除目录下子文件夹里的文件。
#2
或者说在一个脚本里,能不能删除多个文件夹下的文件呢,它们并不是同一个目录。
我对这类代码不太了解,还望前辈们详细的说明。
我对这类代码不太了解,还望前辈们详细的说明。
#3
这脚本不就是用datepart来得到日期时间元素组合成的字符串,对比value,如果等于就删文件然后退出,如果不等于继续loop
datepart的元素有(假设给定日期是now,也就是当天)
m = 返回月
d = 返回今天是一个月中的第几日
h = 返回当前的小时
n = 返回当前的分
除此之外还有
yyyy = 返回年
y = 返回今天是一年中的第几天
q = 返回今天是第几个季度
s = 返回秒
w = 返回是一个星期中的第几日,这里要注意,默认是周日开始计算,比如周二会返回3
ww = 返回一年中的第几个星期
脚本中其他的,也没什么好解释的了
你如果用这个脚本删除多个文件夹下的文件,可以把fso.DeleteFile Path,True这一行后添加几行就行
如果想枚举一个文件夹下的N层子目录进行删除,可以办到,但是这个脚本还差远了,呵呵.
datepart的元素有(假设给定日期是now,也就是当天)
m = 返回月
d = 返回今天是一个月中的第几日
h = 返回当前的小时
n = 返回当前的分
除此之外还有
yyyy = 返回年
y = 返回今天是一年中的第几天
q = 返回今天是第几个季度
s = 返回秒
w = 返回是一个星期中的第几日,这里要注意,默认是周日开始计算,比如周二会返回3
ww = 返回一年中的第几个星期
脚本中其他的,也没什么好解释的了
你如果用这个脚本删除多个文件夹下的文件,可以把fso.DeleteFile Path,True这一行后添加几行就行
如果想枚举一个文件夹下的N层子目录进行删除,可以办到,但是这个脚本还差远了,呵呵.
#4
比方说我还想删除
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
C:\清理\09
C:\清理\10子文件夹下所有文件,代码如何添加。我比较木,对这些不太了解呢。
我刚试着添加,提示句柄什么的,哎。都给我解答出来了,自个还是不会弄。
#5
这个需要写个sub过程然后反复的call传递参数给FileSystemObject对象的subfolders,这样就会形成枚举,另外你的思路有些僵化,呵呵。因为你的最小分辨时间为分钟,那为啥sleep100毫秒呢,嫌CPU太闲了,完全可以设成sleep30000毫秒,这样系统开销就小多了。
今天太晚了,明天你再写不出来,我就给你写个,呵呵。
#6
回复于:2011-02-09 02:14:05
羊老师好敬业。。
学习中。。
羊老师好敬业。。
学习中。。
#7
这个用计划任务+bat更容易实现罢
指定日期和时间 --可以用计划任务
删除清理目录下子文件夹里的文件 --在bat文件里用del命令就行了
指定日期和时间 --可以用计划任务
删除清理目录下子文件夹里的文件 --在bat文件里用del命令就行了
#8
呵,我是门外汉,干脆给我修改下。写出来吧。呵呵。
至于楼上说用bat,不能后台运行。所以感觉不好。
#9
将批处理转换成EXE 然后注册成服务 同样可以后台运行的
#10
必须的膜拜~
#11
门外汉就好,门外汉好糊弄,嘿嘿
不过还是给你加上点注释,看得清楚些。
不过还是给你加上点注释,看得清楚些。
'枚举删除多级路径下的文件 - 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
#12
Young做VB脚本挺快的,呵呵
#13
下午都写好了的,等着楼主下指令呢,呵呵
#14
谢谢羊老师。呵呵,真有用。太谢谢了。
#15
呵,结贴了,不过还有个小问题,如果是每个月的某天都执行删除的动作。
时间的判断该怎么写呢。呵呵,很贪心哦。
时间的判断该怎么写呢。呵呵,很贪心哦。
#16
还有就是,如果我把3000改成100 会有什么后果。嘿嘿。
#17
改成100,你的CPU使用率持续时间会很高,如果以分钟为判断,没必要设置那么短。
#18
两个办法,1、让脚本长时间运行不退出,2、使用计划任务,看你拿这个脚本来干吗了,如果就是普通的清理,那就最好是第2种
#19
计划任务确实很好用