Board logo

标题: [技术讨论] 定时删除系统垃圾文件的程序,有些问题想与大家讨论! [打印本页]

作者: 将脚本进行到底    时间: 2013-5-5 00:11     标题: 定时删除系统垃圾文件的程序,有些问题想与大家讨论!

本帖最后由 将脚本进行到底 于 2013-5-5 01:31 编辑

先解释一下,主程序是个定时功能,子程序是遍历和删除的功能,遍历采用的是递归调用!
--------------------------------------------------开始--------------------------------------------------------------
On Error Resume Next
dim k,m,a,b,b1,d1
dim t1,t2,t3,t4,t5,t6
---------------------------------------定时-----------------------------------------------------------
t4=inputbox("请指定删除系统垃圾的时间(格式为xx:xx:xx:  ) ")
if t4<>""then
t5=cdate(t4)
t2=inputbox("请指定删除系统垃圾的日期(格式是xxxx年/xx月/xx日)")
  if t2<>" "then
  t3=cdate(t2)
  t1=date
    if t3=t1 then
     do
     t6=time
     loop until t6=t5
       if t6=t5 then
         set s1=wscript.createobject("wscript.shell")
         bianli("c:\")
         if m<>0 then
         s1.popup "共删除了"&m&"个系统垃圾文件",2,"提示",64
         end if
       end if
    else
    end if
  else
  end if
else
end if
-----------------------------------------------------------遍历--------------------------------------------------------------
function bianli(spath)
set ofso=createobject("scripting.filesystemobject")
set ofolder=ofso.getfolder(spath)
set osubfolders=ofolder.subfolders
set ofiles=ofolder.files
----------------文件的遍历---------------------
for each ofile in ofiles
--------------文件判断和删除-------------------
b=ofile.name
k=right(b,4)
if  k=".tmp" or k=".log" or k=".gid" or k="chk" or k=".old" or k=".bak" then
ofso.deletefile(ofile)
m=m+1
end if
next
----------------文件夹的遍历---------------------
for each osubfolder in osubfolders
b1=osubfolder.path
bianli(osubfolder.path)
next
set ofolder=nothing
set osubfolders=nothing
set ofso=nothing
end function
---------------------------------------------结束------------------------------------------------------
我发现一些问题,如果这个程序没有到定时触发点,那就意味着一直处于循环判断中,可是在xp上跑,发现它一直占用很多CPU的使用资源,而且PC会变得非常的卡,我不知道是XP操作系统分配资源的问题,还是VBS本来就是如此!
所以想问下VBS有没有分配资源的权限?如果没有,是不是只能通过调用API来实现?
作者: Demon    时间: 2013-5-5 08:43

自己的代码垃圾却把责任推到VBS上
作者: czjt1234    时间: 2013-5-5 08:53

本帖最后由 czjt1234 于 2013-5-5 08:56 编辑

花了n分钟,把代码缩进了一下
  1. On Error Resume Next
  2. dim k,m,a,b,b1,d1
  3. dim t1,t2,t3,t4,t5,t6
  4. t4=inputbox("请指定删除系统垃圾的时间(格式为xx:xx:xx:  ) ")
  5. if t4<>""then
  6.     t5=cdate(t4)
  7.     t2=inputbox("请指定删除系统垃圾的日期(格式是xxxx年/xx月/xx日)")
  8.     if t2<>" "then
  9.         t3=cdate(t2)
  10.         t1=date
  11.         if t3=t1 then
  12.             do
  13.                 t6=time
  14.                 wscript.sleep 500
  15.             loop until t6=t5
  16.             if t6=t5 then
  17.                 set s1=wscript.createobject("wscript.shell")
  18.                 bianli("c:\")
  19.                 if m<>0 then
  20.                     s1.popup "共删除了"&m&"个系统垃圾文件",2,"提示",64
  21.                 end if
  22.             end if
  23.         end if
  24.     end if
  25. end if
  26. function bianli(spath)
  27.     set ofso=createobject("scripting.filesystemobject")
  28.     set ofolder=ofso.getfolder(spath)
  29.     set osubfolders=ofolder.subfolders
  30.     set ofiles=ofolder.files
  31.     for each ofile in ofiles
  32.         b=ofile.name
  33.         k=lcase(right(b,3))
  34.         if k="tmp" or k="log" or k="gid" or k="chk" or k="old" or k="bak" then
  35.             ofso.deletefile(ofile)
  36.             m=m+1
  37.         end if
  38.     next
  39.     for each osubfolder in osubfolders
  40.         b1=osubfolder.path
  41.         bianli(osubfolder.path)
  42.     next
  43.     set ofolder=nothing
  44.     set osubfolders=nothing
  45.     set ofso=nothing
  46. end function
复制代码
确实很垃圾的代码

注意加了wscript.sleep 500延时就不占cpu了
作者: 将脚本进行到底    时间: 2013-5-6 15:05

我也知道这代码真的的确很垃圾,效率太低了!自我惆怅下吧!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2