标题: 用VBS压缩ZIP文件
作者: Demon
链接: https://demon.tw/programming/vbs-zip-file.html
版权: 本博客的所有文章,都遵守“署名-非商业性使用-相同方式共享 2.5 中国大陆”协议条款。
有解压缩当然也有压缩,代码不是我写的,仍然是昨天给我程序那个高手写的。
赞赏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
微信赞赏支付宝赞赏
随机文章:
其实我有一个问题想问啊,你上面的这个解压缩方法,貌似只能解压缩标准的zip文件,如果有点不一样就不行,能不能扩张一下,实现解压缩WINRAR这样的工具解压大部分压缩文件啊,比如我有一个文件是xxx.png.z(注:QTP 结果文件里生成的压缩图片的文件),用上面的方法就不行了,用那个winrar的方法,有个限制就是有的机器上可能没装,脚本就会报错。所以求关注解决啊!
代码执行起来没什么问题,但是会弹出一个很明显的复制框,这能不能避免呢?换句话说,能不能后台静默压缩?
你把第二行的Msgbox “OK”
删除了就OK
Folder.CopyHere(
vItem,
[ vOptions ]
)
其中vItem参数可以是一个文件的完整路径,也可以是一个FolderItem对象,或者FolderItems集合对象。
特别要注意的是vItem参数一定要以Variant 类型传入,否则会没有任何响应。
vOptions参数可以设置一些显示模式,比如设置为4,在解压缩zip文件时不会显示进度条。
—————–
转自 http://www.exceloffice.net/archives/1484
看来感觉收益匪浅,感谢博主。有问题想问一下,我用这段代码去压缩文件时,发现,当文件夹内部包含一个空文件夹的时候,会有bug提示信息,大概意思是因为该文件夹下包含空文件夹,因此不可以放入压缩的achive。我也是初学,不知道是自身的缘故还是其他的原因,特此来请教以下。。谢谢。
win7执行报错, Set objFolderItem = objSource.Items(), 缺少对象,800a01a8,所传入参数:Zip “D:/workspace/db/20141014”, “D:/workspace/db/20141014.zip”
请问如何保留文件夹进行压缩?
比如
需要压缩的文件夹为test,包含1.txt
压缩结果为:test.zip,直接打开zip能看到文件夹test,再进入test,才看见1.txt
Case “Folder”
Set objSource = objShell.NameSpace(mySourceDir)
‘Set objFolderItem = objSource.Items()
Set objFolderItem = objSource
我就是想问,可以实现加密压缩嘛?