|
|
|
<b>VBS脚本,删除指定以外的文件,文件夹</b><br><br>Option Explicit&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;说明&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;网盟-黑火制作,送给需要的朋友。&;#39;配置文件“Listfile.ini”的格式如下:&;#39;要删除什么(文件|目录)=要执行删除的文件夹=排除1;排除2;排除3............&;#39;配置文件可以有多行,以便对多个目录进行操作。&;#39;配置文件里以“/”开头的行为注释行。&;#39;排除多个内容时,使用分号“;”进行分隔。&;#39;↓↓↓ 配置文件例子:↓↓↓&;#39;/配置文件开始&;#39;目录=D:\=System Volume Information;网络游戏;单机游戏;小游戏&;#39;目录=C:\Program Files=qq;WinRAR&;#39;文件=D:\网络游戏=文件1.exe;文件2.exe&;#39;/配置文件结束&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;说明完&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;&;#39;Dim Fso,Listfile,objListfileListfile = "" &;#39;设置配置文件路径,如果配置文件和脚本放在一起,请保持原样If Listfile = "" Then Listfile = "Listfile.ini"Set Fso = CreateObject("Scripting.FileSystemObject")On Error Resume NextSet objListfile = Fso.OpenTextFile(Listfile,1)If Err Then err.Clear Msgbox "没有找到配置文件 "&;Listfile,16,"错误" WScript.quitEnd IfOn Error GoTo 0Dim flnum,fdnum,t1,t2,tmflnum=0fdnum=0t1 = timer()Dim Myline,LineArr,ListArrDo While objListfile.AtEndOfStream <> True Myline = LCase(Replace(objListfile.ReadLine,"==","=")) If Left(Myline,1) = "/" Then &;#39;objListfile.SkipLine ElseIf CheckLine(Myline) = 2 Then LineArr = Split(Myline,"=") &;#39;DoFolder = LineArr(1) ListArr = Split(LineArr(2),";") &;#39;MsgBox LineArr(0) If LineArr(0) = "目录" Then DelFolder LineArr(1),ListArr If LineArr(0) = "文件" Then DelFile LineArr(1),ListArr End IfLoopt2 = timer()tm=cstr(int(( (t2-t1)*10000 ) 0.5)/10)MsgBox "扫描完毕,共删除 "&;fdnum&;" 个目录, "&;flnum&; "个文件。"&; vbCrLf &;"耗时 "&;tm&;" 毫秒",64,"执行完毕"&;#39;不需要显示报告的话,注释掉上面这一行Set Fso=NoThingWScript.quitSub DelFolder(Folder,ListArr)Dim objFolder,subFolders,subFolder Set objFolder=Fso.Getfolder(Folder) Set subFolders=objFolder.subFolders For Each subFolder In subFolders If Not InArray(LIstArr,LCase(subFolder.name)) Then On Error Resume Next subfolder.Delete(True) If Err Then err.Clear Msgbox "不能删除目录,请检查 "&;subFolder,16,"错误" Else fdnum = fdnum 1 End If On Error GoTo 0 End If NextEnd SubSub DelFile(Folder,ListArr)Dim objFolder,Files,File Set objFolder=Fso.Getfolder(Folder) Set Files=objFolder.Files For Each File In Files If Not InArray(LIstArr,LCase(File.name)) Then On Error Resume Next File.Delete(True) If Err Then err.Clear Msgbox "不能删除文件,请检查 "&;File,16,"错误" Else flnum = flnum 1 End If On Error GoTo 0 End If NextEnd SubFunction CheckLine(strLine)Dim LineRegExp,MatchesSet LineRegExp = New RegExpLineRegExp.Pattern = ".=."LineRegExp.Global = TrueSet Matches = LineRegExp.Execute(strLine)CheckLine = Matches.countEnd FunctionFunction InArray(Myarray,StrIn)Dim StrTempInArray = TrueFor Each StrTemp In Myarray If StrIn = StrTemp Then Exit Function Exit For End IfNextInArray = FalseEnd Function |
|