使用脚本自动压缩指定目标下的所有文件的代码

所属分类: 脚本专栏 / vbs 阅读数: 1477
收藏 0 赞 0 分享
为了解决这类问题,我使用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
更多精彩内容其他人还在看

VBS实现截图功能

本文给大家分享了下2种通过VBS实现截图功能的代码,第一个是纯VBS实现,第二种方法是通过把简短的第三方工具集合到VBS脚本来实现更加丰富的功能。
收藏 0 赞 0 分享

VBS中Run和Exec的区别

这篇文章主要介绍了VBS中Run和Exec的区别,需要的朋友可以参考下
收藏 0 赞 0 分享

VBS获取GZIP压缩的HTTP内容的实现代码

这篇文章主要介绍了VBS获取GZIP压缩的HTTP内容的实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

VC中实现文字竖排的简单方法(推荐)

下面小编就为大家带来一篇VC中实现文字竖排的简单方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

对一个vbs脚本病毒的病毒原理分析

这篇文章主要介绍了对一个vbs脚本病毒的病毒原理分析的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

vbs判断磁盘类型和检测硬盘剩余空间的实现代码

这篇文章主要介绍了vbs判断磁盘类型和检测硬盘剩余空间的实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

VBS调用WMI遍历搜索硬盘文件并计数的方法

这篇文章主要介绍了VBS调用WMI遍历搜索硬盘文件并计数的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

vbs 查找硬盘分区中指定扩展名文件的实现代码

vbs 用于查找硬盘所有分区中指定扩展名文件的代码,有需要的朋友可以参考下。挺实用的一段代码,用来深入学习vbs,确实不错
收藏 0 赞 0 分享

vbs Size 属性使用介绍(获取文件大小)

为大家介绍vbs属性之size属性,供大家学习参考。Size 属性 对于文件,返回指定文件的字节数;对于文件夹,返回该文件夹中所有文件和子文件夹的字节数
收藏 0 赞 0 分享

vbs获取当前路径的代码

有时候我们需要获取执行当前vbs的路径,那么就可以参考下面的代码,一般用来可以删除自身等操作
收藏 0 赞 0 分享
查看更多