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

VBScript
用vbs检索在运行对话框中键入的一系列命令的代码
编写可以打开文本文件并打乱在该文件中所找到的单词顺序的vbs脚本
在 HTA 中暂停脚本的方法
运行脚本之前,如何确定计算机上的默认脚本宿主的代码
用vbs实现删除名称中有撇号的文件夹
用vbs将输出内容写到屏幕以覆盖当前屏幕上的内容的方法
用vbs实现配置无人登录计算机时使用的屏幕保护程序
用vbs更改 Internet Explorer 的标题栏
用vbs读取文本文件的最后一行
用vbs实现重新启动 Internet Explorer
用vbs实现禁用服务
用vbs确定计算机是否有 USB 2.0 端口的代码
用vbs列出注册表中 Run 项中的所有项目
用vbs将名称截断以使其最多包含 16 个字符的代码
用vbs将本地文件替换为在文件服务器上找到的新版本
用vbs确定脚本正在哪一个帐户下运行
用vbs确定可移动驱动器的连接时间
用vbs记录屏幕保护程序的开始时间和结束时间
用vbs计算某个词在日志文件中的出现次数
vbs病毒的简单例子源代码解析

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


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