使用脚本自动压缩指定目标下的所有文件的代码 |
本文标签:自动压缩 为了解决这类问题,我使用Visual Basic Scripting设计了一个脚本,可以自动达到这个目标 。在本脚本中,自动压缩所有文件 。为了避免将脚本自己也压缩进去,使用了一些判断 。 复制代码 代码如下: call main() Sub main() Dim fs 文件系统 。 Dim f folder Dim fc files Dim s string Dim ws SHELL 。 Dim subfs Dim fi 创建SHELL 。 Set ws = CreateObject("WScript.Shell") 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(ws.currentdirectory) Handle_files(ws.currentdirectory) Set subfs = f.SubFolders 遍历每个子目录 。 For Each fi In subfs Call ListSub(fi.Path) Next End Sub Sub ListSub(filename) On Error Resume Next Dim subfs 子目录 。 首先处理当前目录 。 Handle_Files(filename) 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(filename) Set subfs = f.SubFolders For Each fi In subfs Call ListSub(fi.Path) Next End Sub 处理每个目录下的文件 。 Sub Handle_Files(foldername) 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(foldername) Set fc = f.Files 创建SHELL 。 Set ws = CreateObject("WScript.Shell") 遍历文件对象 。 For Each fl In fc if ((instr(fl.Name,"vbs") = 0) and (instr(fl.Name,"rar") = 0)) then 进行压缩 。 s = "winrar M -ep " & fl.Path & ".rar " & fl.Path ws.Run s, 0, True End If Next End Sub sub output(string) wscript.echo string end sub 一种更加巧妙的方法 对上个脚本稍加改动,使用正则表达式(Regular Expression ),可以方便我们的判断过程 。修改后的脚本程序如下所示 。注意我们这里排除的是不压缩的文件类型 。 复制代码 代码如下: call main() Sub main() Dim fs 文件系统 。 Dim f folder Dim fc files Dim s string Dim ws SHELL 。 Dim subfs Dim fi 创建SHELL 。 Set ws = CreateObject("WScript.Shell") 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(ws.currentdirectory) Handle_files(ws.currentdirectory) Set subfs = f.SubFolders 遍历每个子目录 。 For Each fi In subfs Call ListSub(fi.Path) Next End Sub Sub ListSub(filename) On Error Resume Next Dim subfs 子目录 。 首先处理当前目录 。 Handle_Files(filename) 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(filename) Set subfs = f.SubFolders For Each fi In subfs Call ListSub(fi.Path) Next End Sub 处理每个目录下的文件 。 Sub Handle_Files(foldername) 创建文件对象 。 Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(foldername) Set fc = f.Files 创建SHELL 。 Set ws = CreateObject("WScript.Shell") 遍历文件对象 。 For Each fl In fc if ( RegExpTest(".vbs|.rar|.zip",fl.name) = false) then 进行压缩 。 s = "winrar M -ep " & fl.Path & ".rar " & fl.Path output s ws.Run s, 0, True End If Next End Sub sub output(string) wscript.echo string end sub 使用正则表达式进行判断 。 Function RegExpTest(patrn, strng) Dim regEx, retVal Create variable. Set regEx = New RegExp Create regular expression. regEx.Pattern = patrn Set pattern. regEx.IgnoreCase = False Set case sensitivity. retVal = regEx.Test(strng) Execute the search test. If retVal Then RegExpTest = true Else RegExpTest = false End If End Function |