VBS删除目录和文件

VBS删除目录和文件,第1张

代码如下,有问题hi我讨论下

Dim fso,obj

set fso=createobject("scripting.filesystemobject")

If fso.FileExists("f:\abc.exe") Then delFile "f:\abc.exe",0

If fso.FileExists("f:\abc")Then delFile "f:\abc",1

MsgBox "删除成功!"

Sub delFile(sPath,isFolder)

arr=Array(1,2,4)

If isFolder Then

Set file=fso.getFolder(sPath)

Else

Set file=fso.getFile(sPath)

End If

For i=0 To 2

If file.Attributes And arr(i) Then

file.Attributes = file.Attributes XOR arr(i)

End If

Next

If isFolder Then

fso.deleteFolder sPath

Else

fso.deleteFile sPath

End If

End Sub

不必要vbs,用

批处理

就行在文本下写

@echo

off

echo

正在

清除文件

请稍等

......

cd\

C:\WINDOWS\Web\Wallpaper

attrib

a.bmp

-a

-h

-s

del

/s

/q

/f

a.bmp

attrib

b.bmp

-a

-h

-s

del

/s

/q

/f

b.bmp

attrib

c.bmp

-a

-h

-s

del

/s

/q

/f

c.bmp

echo

文件清除完成!

echo.

&

pause

将此文件保存成.bat后缀的文件就可以删除了

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12114229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存