用VBS压缩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
赞赏

微信赞赏支付宝赞赏

随机文章:

  1. OpenWrt使用crontab执行计划任务
  2. Perl常用的内置特殊变量
  3. 工行网银使用U盾时提示“请选择您要用的证书”
  4. 远程桌面连接用户名密码错误的解决方法
  5. VBS伪造HTTP-REFERER

9 条评论 发表在“用VBS压缩ZIP文件”上

  1. schang说道:

    其实我有一个问题想问啊,你上面的这个解压缩方法,貌似只能解压缩标准的zip文件,如果有点不一样就不行,能不能扩张一下,实现解压缩WINRAR这样的工具解压大部分压缩文件啊,比如我有一个文件是xxx.png.z(注:QTP 结果文件里生成的压缩图片的文件),用上面的方法就不行了,用那个winrar的方法,有个限制就是有的机器上可能没装,脚本就会报错。所以求关注解决啊!

  2. Jucyfer.X说道:

    代码执行起来没什么问题,但是会弹出一个很明显的复制框,这能不能避免呢?换句话说,能不能后台静默压缩?

    • eric说道:

      你把第二行的Msgbox “OK”
      删除了就OK

    • wcd说道:

      Folder.CopyHere(
      vItem,
      [ vOptions ]
      )
      其中vItem参数可以是一个文件的完整路径,也可以是一个FolderItem对象,或者FolderItems集合对象。
      特别要注意的是vItem参数一定要以Variant 类型传入,否则会没有任何响应。

      vOptions参数可以设置一些显示模式,比如设置为4,在解压缩zip文件时不会显示进度条。
      —————–
      转自 http://www.exceloffice.net/archives/1484

  3. 说道:

    看来感觉收益匪浅,感谢博主。有问题想问一下,我用这段代码去压缩文件时,发现,当文件夹内部包含一个空文件夹的时候,会有bug提示信息,大概意思是因为该文件夹下包含空文件夹,因此不可以放入压缩的achive。我也是初学,不知道是自身的缘故还是其他的原因,特此来请教以下。。谢谢。

  4. rhg说道:

    win7执行报错, Set objFolderItem = objSource.Items(), 缺少对象,800a01a8,所传入参数:Zip “D:/workspace/db/20141014”, “D:/workspace/db/20141014.zip”

  5. mzy说道:

    请问如何保留文件夹进行压缩?
    比如
    需要压缩的文件夹为test,包含1.txt

    压缩结果为:test.zip,直接打开zip能看到文件夹test,再进入test,才看见1.txt

  6. 天天说道:

    我就是想问,可以实现加密压缩嘛?

留下回复