OptionExplicit
dimServerPath,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="serverlog$"'在这里设置服务器上的共享文件夹(可写共享),用来存放删除日志
onlyone="是"'设置是否只扫描一次,如果想每次运行都扫描,请改为“否”。
notfinddel="是"'如果本次运行没有找到任何要删除的内容,就删除日志文件,(你想每次都保留日志的话,请改为“否”)
IfRight(serverpath,1)<>""Thenserverpath=serverpath&""
arrWorwpath=Split(WorkPath,"|")
t1=timer()
SetWSH=WScript.CreateObject("WScript.Shell")
wsh.run"regsvr32/sscrrun.dll",0,true
Setfso=CreateObject("Scripting.FileSystemObject")
SetWshNetwork=WScript.CreateObject("WScript.Network")
cName=WshNetwork.ComputerName
exectime=Now()
Dimdicdrv,logfile,logfilepath,Objdrv,drvTotalSize,drvFreeSpace
logfilepath=Replace(ServerPath&cName&".txt",":","-")
IfNotfso.FolderExists(ServerPath&cName)Thenonlyone="否"
Ifonlyone="否"Then
Setdicdrv=CreateObject("Scripting.Dictionary")
Setlogfile=fso.OpenTextFile(logfilepath,8,True)
logfile.WriteBlankLines(1)
logfile.WriteLine"#####################################################"
logfile.WriteLine"开始扫描--"&Now()
logfile.WriteBlankLines(1)
ForEachstrWorkPathInarrWorwpath
IfRight(strWorkPath,1)<>""ThenstrWorkPath=strWorkPath&""
scan(strWorkPath)
IfNotdicdrv.Exists(UCase(Left(strWorkPath,1))&"t")Then
SetObjdrv=fso.GetDrive(fso.GetDriveName(Left(strWorkPath,2)))
dicdrv.addUCase(Left(strWorkPath,1))&"t",FormatNumber(Objdrv.TotalSize/1048576,0)
dicdrv.addUCase(Left(strWorkPath,1))&"f",FormatNumber(Objdrv.FreeSpace/1048576,0)
EndIf
Next
t2=timer()
tm=cstr(int(((t2-t1)*10000)+0.5)/10)
logfile.WriteBlankLines(1)
logfile.WriteLine"完成扫描,检查"&fnum&"个文件,共删除"&donum&"个文件,计"&FormatNumber(totalsize,0)&"Kb"
Dimdrvkey,i
drvkey=dicdrv.Keys
Fori=0Todicdrv.Count-1Step2
logfile.WriteLineLeft(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
Ifnotfinddel="是"Then
Ifdonum=0Thenfso.DeleteFilelogfilepath,True
EndIf
IfNotfso.FolderExists(ServerPath&cName)Thenfso.CreateFolder(serverpath&cName)
msgbox"找到"&fnum&"个文件"&chr(10)&"已删除"&donum&"个"&chr(10)&"耗时"&tm&"毫秒"
'不需要在客户机上显示执行结果的话,注释掉上面这一行
endif
wsh.run"regsvr32/u/sscrrun.dll",0,true
SetWshNetwork=Nothing
Setwsh=NoThing
SetFSO=NoThing
WScript.quit
Subscan(strfolder_)
Dimfolder_,files,file,ext,subfolders,subfolder
'onerrorresumenext
Setfolder_=fso.getfolder(strfolder_)
Setfiles=folder_.files
ForEachfileInfiles
fnum=fnum+1
ext=fso.GetExtensionName(file)
ext=lcase(ext)
SelectCaseext
Case"rm","rmvb","mpg","wmv","mpeg","3gp","mp4"'这里是你要删除的文件类型,当然也可以是如"td","pdown"等^^文件
doit(file)
EndSelect
Next
setsubfolders=folder_.subfolders
ForEachsubfolderInsubfolders
Ifsubfolder.name<>"SystemVolumeInformation"Andsubfolder.name<>"RECYCLER"Then
scan(subfolder)
EndIf
Next
EndSub
Subdoit(file)
Dimstrtemp,lngsize,strsizeV
strtemp=file.path
lngsize=clng(file.size/1024)
donum=donum+1
totalsize=totalsize+lngsize
'fso.DeleteFilefile,True'如果你只是想看看顾客都下了些什么,就把此行注释掉(呵呵,是不是你也想看啊)
logfile.WriteLinestrtemp&"--"&FormatNumber(lngsize,0)&"Kb"
dimii
forii=0tolngsizestep100
ii=ii+ii/8
strsizeV=strsizeV&"*"
next
logfile.WriteLine"---"&strsizeV
endSub