fso.
deletefile
("并棚D:\旧建文件夹\*") '删除目简蔽陆录下所有文拦顷件
fso.deletefolder("D:\旧建文件夹\*") '删除目录下所有文件夹望采纳
Option Explicit\'\'\'\'\'\'\'\'\'\'\'\'薯纯谈\'\'说明\'\'\'\'\'\'\'\'\'\'\'\'\'网盟-黑火制作,送给需要的朋友。
\'配置文件“Listfile.ini”的格式如下:
\'要删除什么(文件|目录)=要执行删除数碰的文件夹=排除1排除2排除3............
\'配置文件可以有裤扰多行,以便对多个目录进行 *** 作。
\'配置文件里以“/”开头的行为注释行。
\'排除多个内容时,使用分号“”进行分隔。
\'↓↓↓ 配置文件例子:↓↓↓
\'/配置文件开始
\'目录=D:\\=System Volume Information网络游戏单机游戏小游戏
\'目录=C:\\Program Files=qqWinRAR
\'文件=D:\\网络游戏=文件1.exe文件2.exe
\'/配置文件结束
\'\'\'\'\'\'\'\'\'\'\'\'\'说明完\'\'\'\'\'\'\'\'\'\'\'\'Dim Fso,Listfile,objListfile \'//定义三个变量
Listfile = ""\'//设置配置文件路径,如果配置文件和脚本放在一起,请保持原样If Listfile = "" Then Listfile = "Listfile.ini" \'//如果Listfil未设置那么Listfile(配置文件)为Listfile.ini
Set Fso = CreateObject("Scripting.FileSystemObject") \'//创建文件系统
On Error Resume Next \'//忽略错误继续执行下面的命令
Set objListfile = Fso.OpenTextFile(Listfile,1) \'//只独模式打开Listfile.ini文件
If Err Then \'//如果有错误
err.Clear \' //清除错误
Msgbox "没有找到配置文件 "&Listfile,16,"错误" \'//d出提示消息
WScript.quit \'//退出脚本(结束)
End If
On Error GoTo 0Dim flnum,fdnum,t1,t2,tm\'//定义变量
flnum=0 \'//设置变量的值
fdnum=0
t1 = timer() \'//将当前时间赐予t1(用来计算脚本运行时间的起始时间)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
Loopt2 = timer()\'//将当前时间赐予t2(用来计算脚本运行时间的结束时间)
tm=cstr(int(( (t2-t1)*10000 )+0.5)/10) \'//计算两时间差(这里我觉得用DateDiff这个函数比较好)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 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
Next
End SubFunction CheckLine(strLine) \'//自己定义的函数用于检查配置文件中 = 号两边是否都有内容
Dim LineRegExp,Matches \'//定义变量
Set LineRegExp = New RegExp \'//创建正则表达式
LineRegExp.Pattern = ".=." \'//(不知道该怎么解释好,对于正则表达式不是很理解)类是我们查找*.*文件一样,这里查找*=*
LineRegExp.Global = True\'//以下就是判断=号两边是否都有内容
Set Matches = LineRegExp.Execute(strLine)
CheckLine = Matches.count \'//如果都有将返回 2
End FunctionFunction 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)