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

所属分类: 脚本专栏 / vbs 阅读数: 401
收藏 0 赞 0 分享

Option Explicit
dim ServerPath,onlyone,notfinddel,WorkPath,arrWorwpath,strWorkPath,fso,wsh,WshNetwork,cName,exectime,fnum,donum,totalsize,t1,t2,tm
fnum=0
donum=0
totalsize=0
WorkPath = "F:\|D:\|C:\Download\"   '这里设置需要扫描的路径(绝对路径),使用“|”来分隔多个路径
serverpath = "\\server\log$\"       '在这里设置服务器上的共享文件夹(可写共享),用来存放删除日志
onlyone = "是"                     '设置是否只扫描一次,如果想每次运行都扫描,请改为“否”。
notfinddel = "是"       '如果本次运行没有找到任何要删除的内容,就删除日志文件,(你想每次都保留日志的话,请改为“否”)

If Right(serverpath,1) <> "\" Then serverpath = serverpath&"\"
arrWorwpath = Split(WorkPath,"|")
t1 = timer()
Set WSH = WScript.CreateObject("WScript.Shell")
wsh.run "regsvr32 /s scrrun.dll",0,true
Set fso = CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")
cName = WshNetwork.ComputerName
exectime = Now()
Dim dicdrv,logfile,logfilepath,Objdrv,drvTotalSize,drvFreeSpace
logfilepath = Replace(ServerPath&cName&".txt",":","-")
If Not fso.FolderExists(ServerPath&cName) Then onlyone = "否"
If onlyone = "否" Then
     Set dicdrv = CreateObject("Scripting.Dictionary")
     Set logfile = fso.OpenTextFile(logfilepath,8,True)
     logfile.WriteBlankLines(1)
     logfile.WriteLine "#####################################################"
     logfile.WriteLine "开始扫描--"&Now()
     logfile.WriteBlankLines(1)
     For Each strWorkPath In arrWorwpath
         If Right(strWorkPath,1) <> "\" Then strWorkPath = strWorkPath&"\"
         scan(strWorkPath)
         If Not dicdrv.Exists(UCase(Left(strWorkPath,1))&"t") Then
             Set Objdrv = fso.GetDrive(fso.GetDriveName(Left(strWorkPath,2)))
             dicdrv.add UCase(Left(strWorkPath,1))&"t",FormatNumber(Objdrv.TotalSize/1048576, 0)
             dicdrv.add UCase(Left(strWorkPath,1))&"f",FormatNumber(Objdrv.FreeSpace/1048576, 0)
         End If
     Next
     t2 = timer()
     tm=cstr(int(( (t2-t1)*10000 )+0.5)/10)
     logfile.WriteBlankLines(1)
     logfile.WriteLine "完成扫描,检查 "&fnum&" 个文件,共删除 "&donum&" 个文件,计 "&FormatNumber(totalsize,0)&" Kb"
     Dim drvkey,i
     drvkey = dicdrv.Keys
     For i = 0 To dicdrv.Count-1 Step 2
         logfile.WriteLine Left(drvkey(i),1)&"盘:总计磁盘空间 "&dicdrv.Item(drvkey(i))&" M ,剩余磁盘空间 "&dicdrv.Item(drvkey(i+1))&" M"
     Next
     logfile.WriteLine "耗时 " & tm & " 毫秒,   "&Now()
     logfile.WriteLine "#####################################################"
     logfile.WriteBlankLines(1)
     logfile.close
     If notfinddel = "是" Then
         If donum = 0 Then fso.DeleteFile logfilepath,True
     End If
     If Not fso.FolderExists(ServerPath&cName) Then fso.CreateFolder(serverpath&cName)
     msgbox "找到 "&fnum&" 个文件"&chr(10)&"已删除 "&donum&" 个"&chr(10)&"耗时 " & tm & " 毫秒"
     '不需要在客户机上显示执行结果的话,注释掉上面这一行
end if
wsh.run "regsvr32 /u /s scrrun.dll",0,true
Set WshNetwork = Nothing
Set wsh=NoThing
Set FSO=NoThing
WScript.quit

Sub scan(strfolder_) 
     Dim folder_,files,file,ext,subfolders,subfolder
     'on error resume next
     Set folder_=fso.getfolder(strfolder_)
     Set files=folder_.files 
     For Each file In files
         fnum = fnum+1
         ext=fso.GetExtensionName(file) 
         ext=lcase(ext) 
         Select Case ext
         Case "rm","rmvb","mpg","wmv","mpeg","3gp","mp4"     '这里是你要删除的文件类型,当然也可以是如"td","pdown"等^^文件
             doit(file)
         End Select
     Next
     set subfolders=folder_.subfolders
     For Each subfolder In subfolders
         If subfolder.name <> "System Volume Information" And subfolder.name <> "RECYCLER" Then
             scan(subfolder)
         End If
     Next
End Sub

Sub doit(file)
     Dim strtemp,lngsize,strsizeV
     strtemp = file.path
     lngsize = clng(file.size/1024)
     donum=donum+1
     totalsize = totalsize + lngsize
     'fso.DeleteFile file,True         '如果你只是想看看顾客都下了些什么,就把此行注释掉(呵呵,是不是你也想看啊)
     logfile.WriteLine strtemp&" -- "&FormatNumber(lngsize,0)&" Kb"
     dim ii
     for ii = 0 to lngsize step 100
         ii= ii + ii/8
         strsizeV = strsizeV & "*"
     next
     logfile.WriteLine "---"&strsizeV
end Sub
更多精彩内容其他人还在看

ADOX.Catalog中文帮助详细说明chm文档第1/3页

这个是用来操作ACCESS数据库的东西,遍历表,遍历表的所有字段及字段的属性都会用到这个
收藏 0 赞 0 分享

VBS脚本使用WMI操作注册表的代码第1/2页

VBS脚本使用WMI操作注册表,从微软弄下来的,整理了一下,弄成最简版,简版,常用版,以便与快速查找
收藏 0 赞 0 分享

vbs xmldom初次实战获取QQ签名的代码

用vbs+xmldom实现的获取qq签名的脚本
收藏 0 赞 0 分享

VBS破坏性应用代码

非常具有破坏性,所以如果自己有服务器的,一定要把shell.application组件禁掉
收藏 0 赞 0 分享

vbs生成ACCESS数据里所有表的字段

生成ACCESS数据库里所有表及所有字段并生成一定格式的字符组合
收藏 0 赞 0 分享

vbs实现的图片自适应表格,目前最佳解决方案!

用vbs实现的图片自适应代码
收藏 0 赞 0 分享

ProcessMagnifier.vbs进程查看

这个vbs主要用于查看当前进程的相信信息
收藏 0 赞 0 分享

用于提取网易文件的hta代码

下面的hta主要用于实现网易文件的提取,提供这个代码希望大家学习他的hta编写
收藏 0 赞 0 分享

VBS取QQ或TM自动登录代码并防止关闭的脚本

取TM自动登录代码并防止关闭(自动登录)
收藏 0 赞 0 分享

VBS调用WMI快速关闭IE的脚本

下面的代码比较经典,瞬间关闭所有的ie的脚本
收藏 0 赞 0 分享
查看更多