用VBS脚本删除指定以外的文件或文件夹
用VBS脚本删除指定以外的文件或文件夹
发布时间:2016-12-28 来源:查字典编辑
摘要:OptionExplicit''''''''''''''说明'''''''''''''网盟-黑火制作,送给需要的朋友。'配置文件“Listf...

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新vbs学习
热门vbs学习
脚本专栏子分类