用vbs删除某些类型文件和磁盘空间报告的脚本
程序员文章站
2022-07-04 20:40:52
option explicit dim serverpath,onlyone,notfinddel,workpath,arrworwpath,strwo...
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