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

VBScript
一个最简单的vbs类实例代码
实用vbs提醒小程序
使用vbs下载文件的代码加强版
vbs病毒制作之一复制自身的vbs脚本
用vbs实现的exe2swf工具脚本代码
vbs更改3389远程桌面端口的脚本
用vbs实现的强制杀进程的脚本
用VBS脚本实现更换Windows Xp序列号的代码
vbs实现右键菜单中添加CMD HERE
用VBS脚本删除指定以外的文件或文件夹
用VBS记录客户机操作的代码
用vbs删除某些类型文件和磁盘空间报告的脚本
两个批量挂马vbs脚本代码
关于vbs WebBrowser导航问题
LCL.VBS 病毒源代码
用vbs实现向任何电子邮件发送邮件
用VBS检测Guest状态的脚本
用vbs实现的输入助手附使用方法
vbs base64 解密脚本代码
用vbs实现修改dns的网关脚本

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 69 ::
收藏到网摘: 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