快速业务通道

用VBS脚本删除指定以外的文件或文件夹

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
OptionExplicit

''''''''''''''''''''''''''''说明''''''''''''''''''''''''
''网盟-黑火制作,送给需要的朋友。
''配置文件“Listfile.ini”的格式如下:
''要删除什么(文件|目录)=要执行删除的文件夹=排除1;排除2;排除3............
''配置文件可以有多行,以便对多个目录进行操作。
''配置文件里以“/”开头的行为注释行。
''排除多个内容时,使用分号“;”进行分隔。
''↓↓↓配置文件例子:↓↓↓
''/配置文件开始
''目录=D:\=SystemVolumeInformation;网络游戏;单机游戏;小游戏
''目录=C:\ProgramFiles=qq;WinRAR
''文件=D:\网络游戏=文件1.exe;文件2.exe
''/配置文件结束
''''''''''''''''''''''''''说明完''''''''''''''''''''''''

DimFso,Listfile,objListfile
Listfile=""''设置配置文件路径,如果配置文件和脚本放在一起,请保持原样

IfListfile=""ThenListfile="Listfile.ini"
SetFso=CreateObject("Scripting.FileSystemObject")
OnErrorResumeNext
SetobjListfile=Fso.OpenTextFile(Listfile,1)
IfErrThen
err.Clear
Msgbox"没有找到配置文件"&Listfile,16,"错误"
WScript.quit
EndIf
OnErrorGoTo0

Dimflnum,fdnum,t1,t2,tm
flnum=0
fdnum=0
t1=timer()

DimMyline,LineArr,ListArr
DoWhileobjListfile.AtEndOfStream<>True
Myline=LCase(Replace(objListfile.ReadLine,"==","="))
IfLeft(Myline,1)="/"Then
''objListfile.SkipLine
ElseIfCheckLine(Myline)=2Then
LineArr=Split(Myline,"=")
''DoFolder=LineArr(1)
ListArr=Split(LineArr(2),";")
''MsgBoxLineArr(0)
IfLineArr(0)="目录"ThenDelFolderLineArr(1),ListArr
IfLineArr(0)="文件"ThenDelFileLineArr(1),ListArr
EndIf
Loop

t2=timer()
tm=cstr(int(((t2-t1)*10000)+0.5)/10)

MsgBox"扫描完毕,共删除"&fdnum&"个目录,"&flnum&"个文件。"&vbCrLf&"耗时"&tm&"毫秒",64,"执行完毕"
''不需要显示报告的话,注释掉上面这一行

SetFso=NoThing
WScript.quit

SubDelFolder(Folder,ListArr)
DimobjFolder,subFolders,subFolder
SetobjFolder=Fso.Getfolder(Folder)
SetsubFolders=objFolder.subFolders
ForEachsubFolderInsubFolders
IfNotInArray(LIstArr,LCase(subFolder.name))Then
OnErrorResumeNext
subfolder.Delete(True)
IfErrThen
err.Clear
Msgbox"不能删除目录,请检查"&subFolder,16,"错误"
Else
fdnum=fdnum+1
EndIf
OnErrorGoTo0
EndIf
Next
EndSub

SubDelFile(Folder,ListArr)
DimobjFolder,Files,File
SetobjFolder=Fso.Getfolder(Folder)
SetFiles=objFolder.Files
ForEachFileInFiles
IfNotInArray(LIstArr,LCase(File.name))Then
OnErrorResumeNext
File.Delete(True)
IfErrThen
err.Clear
Msgbox"不能删除文件,请检查"&File,16,"错误"
Else
flnum=flnum+1
EndIf
OnErrorGoTo0
EndIf
Next
EndSub

FunctionCheckLine(strLine)
DimLineRegExp,Matches
SetLineRegExp=NewRegExp
LineRegExp.Pattern=".=."
LineRegExp.Global=True
SetMatches=LineRegExp.Execute(strLine)
CheckLine=Matches.count
EndFunction

FunctionInArray(Myarray,StrIn)
DimStrTemp
InArray=True
ForEachStrTempInMyarray
IfStrIn=StrTempThen
ExitFunction
ExitFor
EndIf
Next
InArray=False
EndFunction

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号