华域联盟 vbs 用VBS脚本删除指定以外的文件或文件夹

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

Option Explicit

''''''''''''''说明''''''''''''

'网盟-黑火制作,送给需要的朋友。

'配置文件“Listfile.ini”的格式如下:

'要删除什么(文件|目录)=要执行删除的文件夹=排除1;排除2;排除3............

'配置文件可以有多行,以便对多个目录进行操作。

'配置文件里以“/”开头的行为注释行。

'排除多个内容时,使用分号“;”进行分隔。

'↓↓↓ 配置文件例子:↓↓↓

'/配置文件开始

'目录=D:\=System Volume Information;网络游戏;单机游戏;小游戏

'目录=C:\Program Files=qq;WinRAR

'文件=D:\网络游戏=文件1.exe;文件2.exe

'/配置文件结束

'''''''''''''说明完''''''''''''

Dim Fso,Listfile,objListfile

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

If Listfile = "" Then Listfile = "Listfile.ini"

Set Fso = CreateObject("Scripting.FileSystemObject")

On Error Resume Next

Set objListfile = Fso.OpenTextFile(Listfile,1)

If Err Then

     err.Clear

     Msgbox "没有找到配置文件 "&Listfile,16,"错误"

     WScript.quit

End If

On Error GoTo 0

Dim flnum,fdnum,t1,t2,tm

flnum=0

fdnum=0

t1 = timer()

Dim Myline,LineArr,ListArr

Do While objListfile.AtEndOfStream <> True

     Myline = LCase(Replace(objListfile.ReadLine,"==","="))

     If Left(Myline,1) = "/" Then

     'objListfile.SkipLine

     ElseIf CheckLine(Myline) = 2 Then

         LineArr = Split(Myline,"=")

         'DoFolder = LineArr(1)

         ListArr = Split(LineArr(2),";")

   'MsgBox LineArr(0)

         If LineArr(0) = "目录" Then DelFolder LineArr(1),ListArr

         If LineArr(0) = "文件" Then DelFile LineArr(1),ListArr

     End If

Loop

t2 = timer()

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

MsgBox "扫描完毕,共删除 "&fdnum&" 个目录, "&flnum& "个文件。"& vbCrLf &"耗时 "&tm&" 毫秒",64,"执行完毕"

'不需要显示报告的话,注释掉上面这一行

Set Fso=NoThing

WScript.quit

Sub 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

     Next

End Sub

Sub 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

     Next

End Sub

Function CheckLine(strLine)

Dim LineRegExp,Matches

Set LineRegExp = New RegExp

LineRegExp.Pattern = ".=."

LineRegExp.Global = True

Set Matches = LineRegExp.Execute(strLine)

CheckLine = Matches.count

End Function

Function InArray(Myarray,StrIn)

Dim StrTemp

InArray = True

For Each StrTemp In Myarray

     If StrIn = StrTemp Then

         Exit Function

         Exit For

     End If

Next

InArray = False

End Function

本文由 华域联盟 原创撰写:华域联盟 » 用VBS脚本删除指定以外的文件或文件夹

转载请保留出处和原文链接:https://www.cnhackhy.com/15081.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部