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

所属分类: 脚本专栏 / vbs 阅读数: 1060
收藏 0 赞 0 分享
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
更多精彩内容其他人还在看

vbscript Split函数用法详解(字符串转数组函数)

本文详细介绍了vbscript中split函数的用法,有关split函数的一些实例,vbscript中split函数的语法介绍,有需要的朋友参考下
收藏 0 赞 0 分享

VBS实现将Excel表格保存为txt文本

希望能够找到个能给excel表另存为TXT的VBS代码,虽然另存为可以选择,但还是需要直接VBS执行这一步另存为TXT格式的,应该如何写代码呢
收藏 0 赞 0 分享

vbs解决处理TXT文本数据相关问题实现代码

使用vbs处理txt数据时,会遇到一些问题,本文将提供详细的解决方法,希望可以帮助你们
收藏 0 赞 0 分享

关于vbs 生成静态页面过程中出现的问题

访问某个aspx页面,然后把服务器返回的页面以filestream 的形式保存为html格式,接下来将介绍实现代码
收藏 0 赞 0 分享

dim函数第三个参数设置截取字符的长度问题

dim函数的第三个参数,也就是截取字符的长度,我在设置这个的时候,出了些问题,提示无效的过程调用或参数,本文详细介绍如何解决
收藏 0 赞 0 分享

邪恶的eval和new Function使用介绍

这些代码可以干什么?可以肯定的是可以干很多猥琐的事
收藏 0 赞 0 分享

WScript.Shell对象SpecialFolders属性未公开文档分享

WshShell对象的SpecialFolders属性返WshSpecialFolders 对象,该对象是一个特殊文件夹集合,其中包含整套Windows特殊文件夹
收藏 0 赞 0 分享

用VBS修改(设置)系统时间和日期的代码

用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题。那么怎样用 VBS 修改系统的时间呢
收藏 0 赞 0 分享

VBS For Next循环的一些细节

For Next 语句是 VBS 中常用的循环语句,你可能已经用过无数次 For Next 循环,但是你是否注意过它的一些细节呢
收藏 0 赞 0 分享

VBS For Next循环的陷阱分享

在《VBS For Next循环的一些细节》中说到了 For Next 循环的控制变量仅仅在循环开始前求值一次,但是其中存在一处陷阱
收藏 0 赞 0 分享
查看更多