当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs删除某些类型文件和磁盘空间报告的脚本

VBScript
用VBScript批量安装网络打印机和设置默认打印机
Vbs 脚本编程简明教程之一
vbs SendKey 用法 Sendkey 键盘对应的码表
用vbs 取得收藏夹里的所有链接名称和URL的脚本
link-view.vbs 页面链接查看
VBS读网页的代码
用VBScript写合并文本文件的脚本
vbscript ms owc 封裝代码
VbScript 封裝MS OWC(二)
vbs 注册表操作代码(添加删除)
用于修复XP中最小化程序 在任务栏显示图标的vbs脚本
完整的注册表操作实例 VBS脚本
vbs 注册表实现木马自启动
reg2vbs.vbs 将Reg文件转换为VBS文件保存 IT学习网修正版本
e是自然对数的底 e.vbs
vbs imail 密码解密
VBS Runas 自动输入密码, 明文
vbscript 三个数比较大小的实现代码
脚本 MsAgent组件 微软精灵 揪出系统自带的宠物
VBS InternetExplorer.Application的属性和方法介绍

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 105 ::
收藏到网摘: n/a


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