用vbs删除某些类型文件和磁盘空间报告的脚本

时间:2022-11-16 07:26:57
  1. Option Explicit  
  2. dim ServerPath,onlyone,notfinddel,WorkPath,arrWorwpath,strWorkPath,fso,wsh,WshNetwork,cName,exectime,fnum,donum,totalsize,t1,t2,tm  
  3. fnum=0  
  4. donum=0  
  5. totalsize=0  
  6. WorkPath = "F:\|D:\|C:\Download\"   '这里设置需要扫描的路径(绝对路径),使用“|”来分隔多个路径  
  7. serverpath = "\\server\log$\"       '在这里设置服务器上的共享文件夹(可写共享),用来存放删除日志  
  8. onlyone = "是"                     '设置是否只扫描一次,如果想每次运行都扫描,请改为“否”。  
  9. notfinddel = "是"       '如果本次运行没有找到任何要删除的内容,就删除日志文件,(你想每次都保留日志的话,请改为“否”)  
  10.  
  11. If Right(serverpath,1) <> "\" Then serverpath = serverpath&"\"  
  12. arrWorwpath = Split(WorkPath,"|")  
  13. t1 = timer()  
  14. Set WSH = WScript.CreateObject("WScript.Shell")  
  15. wsh.run "regsvr32 /s scrrun.dll",0,true  
  16. Set fso = CreateObject("Scripting.FileSystemObject")  
  17. Set WshNetwork = WScript.CreateObject("WScript.Network")  
  18. cName = WshNetwork.ComputerName  
  19. exectime = Now()  
  20. Dim dicdrv,logfile,logfilepath,Objdrv,drvTotalSize,drvFreeSpace  
  21. logfilepath = Replace(ServerPath&cName&".txt",":","-")  
  22. If Not fso.FolderExists(ServerPath&cName) Then onlyone = "否"  
  23. If onlyone = "否" Then  
  24.      Set dicdrv = CreateObject("Scripting.Dictionary")  
  25.      Set logfile = fso.OpenTextFile(logfilepath,8,True)  
  26.      logfile.WriteBlankLines(1)  
  27.      logfile.WriteLine "#####################################################"  
  28.      logfile.WriteLine "开始扫描--"&Now()  
  29.      logfile.WriteBlankLines(1)  
  30.      For Each strWorkPath In arrWorwpath  
  31.          If Right(strWorkPath,1) <> "\" Then strWorkPath = strWorkPath&"\"  
  32.          scan(strWorkPath)  
  33.          If Not dicdrv.Exists(UCase(Left(strWorkPath,1))&"t") Then  
  34.              Set Objdrv = fso.GetDrive(fso.GetDriveName(Left(strWorkPath,2)))  
  35.              dicdrv.add UCase(Left(strWorkPath,1))&"t",FormatNumber(Objdrv.TotalSize/1048576, 0)  
  36.              dicdrv.add UCase(Left(strWorkPath,1))&"f",FormatNumber(Objdrv.FreeSpace/1048576, 0)  
  37.          End If  
  38.      Next  
  39.      t2 = timer()  
  40.      tm=cstr(int(( (t2-t1)*10000 )+0.5)/10)  
  41.      logfile.WriteBlankLines(1)  
  42.      logfile.WriteLine "完成扫描,检查 "&fnum&" 个文件,共删除 "&donum&" 个文件,计 "&FormatNumber(totalsize,0)&" Kb"  
  43.      Dim drvkey,i  
  44.      drvkey = dicdrv.Keys  
  45.      For i = 0 To dicdrv.Count-1 Step 2  
  46.          logfile.WriteLine Left(drvkey(i),1)&"盘:总计磁盘空间 "&dicdrv.Item(drvkey(i))&" M ,剩余磁盘空间 "&dicdrv.Item(drvkey(i+1))&" M"  
  47.      Next  
  48.      logfile.WriteLine "耗时 " & tm & " 毫秒,   "&Now()  
  49.      logfile.WriteLine "#####################################################"  
  50.      logfile.WriteBlankLines(1)  
  51.      logfile.close  
  52.      If notfinddel = "是" Then  
  53.          If donum = 0 Then fso.DeleteFile logfilepath,True  
  54.      End If  
  55.      If Not fso.FolderExists(ServerPath&cName) Then fso.CreateFolder(serverpath&cName)  
  56.      msgbox "找到 "&fnum&" 个文件"&chr(10)&"已删除 "&donum&" 个"&chr(10)&"耗时 " & tm & " 毫秒"  
  57.      '不需要在客户机上显示执行结果的话,注释掉上面这一行  
  58. end if  
  59. wsh.run "regsvr32 /u /s scrrun.dll",0,true  
  60. Set WshNetwork = Nothing  
  61. Set wsh=NoThing  
  62. Set FSO=NoThing  
  63. WScript.quit  
  64.  
  65. Sub scan(strfolder_)   
  66.      Dim folder_,files,file,ext,subfolders,subfolder  
  67.      'on error resume next  
  68.      Set folder_=fso.getfolder(strfolder_)  
  69.      Set files=folder_.files   
  70.      For Each file In files  
  71.          fnum = fnum+1  
  72.          ext=fso.GetExtensionName(file)   
  73.          ext=lcase(ext)   
  74.          Select Case ext  
  75.          Case "rm","rmvb","mpg","wmv","mpeg","3gp","mp4"     '这里是你要删除的文件类型,当然也可以是如"td","pdown"等^^文件  
  76.              doit(file)  
  77.          End Select  
  78.      Next  
  79.      set subfolders=folder_.subfolders  
  80.      For Each subfolder In subfolders  
  81.          If subfolder.name <> "System Volume Information" And subfolder.name <> "RECYCLER" Then  
  82.              scan(subfolder)  
  83.          End If  
  84.      Next  
  85. End Sub  
  86.  
  87. Sub doit(file)  
  88.      Dim strtemp,lngsize,strsizeV  
  89.      strtemp = file.path  
  90.      lngsize = clng(file.size/1024)  
  91.      donum=donum+1  
  92.      totalsize = totalsize + lngsize  
  93.      'fso.DeleteFile file,True         '如果你只是想看看顾客都下了些什么,就把此行注释掉(呵呵,是不是你也想看啊)  
  94.      logfile.WriteLine strtemp&" -- "&FormatNumber(lngsize,0)&" Kb"  
  95.      dim ii  
  96.      for ii = 0 to lngsize step 100  
  97.          ii= ii + ii/8  
  98.          strsizeV = strsizeV & "*"  
  99.      next  
  100.      logfile.WriteLine "---"&strsizeV  
  101. end Sub