1. 苏葳的备忘录首页
  2. 编程

转一段用vbs压缩文件的代码

vbscript zip从命令行的pkzip到后面的winzip,当年的zip压缩软件几乎成了标准。现如今zip已经不是压缩比最大的算法了,但仍然是使用最广泛的压缩算法。高版本的windows能够自行处理zip压缩文件而不需要第三方工具。Java中的jar打包工具,用的也是zip算法,所以可以用来解压缩zip文件。zip算法源自LZ77,虽不如LZ78和LZW算法,但胜在没有专利限制,因而在各种语言里面纷纷内置了zip算法包或函数库。

Zip "D:\test.iso", "D:\test.zip"
Zip "D:\test", "D:\test.zip"
Msgbox "OK"
Sub Zip(ByVal mySourceDir, ByVal myZipFile)
    Set fso = CreateObject("Scripting.FileSystemObject")
    If fso.GetExtensionName(myZipFile) <> "zip" Then
        Exit Sub
    ElseIf fso.FolderExists(mySourceDir) Then
        FType = "Folder"
    ElseIf fso.FileExists(mySourceDir) Then
        FType = "File"
        FileName = fso.GetFileName(mySourceDir)
        FolderPath = Left(mySourceDir, Len(mySourceDir) - Len(FileName))
    Else
        Exit Sub
    End If
    Set f = fso.CreateTextFile(myZipFile, True)
        f.Write "PK" & Chr(5) & Chr(6) & String(18, Chr(0))
        f.Close
    Set objShell = CreateObject("Shell.Application")
    Select Case Ftype
        Case "Folder"
            Set objSource = objShell.NameSpace(mySourceDir)
            Set objFolderItem = objSource.Items()
        Case "File"
            Set objSource = objShell.NameSpace(FolderPath)
            Set objFolderItem = objSource.ParseName(FileName)
    End Select
    Set objTarget = objShell.NameSpace(myZipFile)
    intOptions = 256
    objTarget.CopyHere objFolderItem, intOptions
    Do
        WScript.Sleep 1000
    Loop Until objTarget.Items.Count > 0
End Sub

可以看出,关键语句是objTarget.CopyHere objFolderItem, intOptions。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/442.html

发表评论

邮箱地址不会被公开。 必填项已用*标注