快速业务通道

用vbs实现zip功能的脚本

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
压缩:
FunctionfZip(sSourceFolder,sTargetZIPFile)
''ThisfunctionwilladdallofthefilesinasourcefoldertoaZIPfile
''usingWindows''nativefolderZIPcapability.
DimoShellApp,oFSO,iErr,sErrSource,sErrDescription
SetoShellApp=CreateObject("Shell.Application")
SetoFSO=CreateObject("Scripting.FileSystemObject")
''Thesourcefolderneedstohavea\ontheEnd
IfRight(sSourceFolder,1)<>"\"ThensSourceFolder=sSourceFolder&"\"
OnErrorResumeNext
''IfatargetZIPexistsalready,deleteit
IfoFSO.FileExists(sTargetZIPFile)ThenoFSO.DeleteFilesTargetZIPFile,True
iErr=Err.Number
sErrSource=Err.Source
sErrDescription=Err.Description
OnErrorGoTo0
IfiErr<>0Then
fZip=Array(iErr,sErrSource,sErrDescription)
ExitFunction
EndIf
OnErrorResumeNext
''Writethefileheaderforablankzipfile.
oFSO.OpenTextFile(sTargetZIPFile,2,True).Write"PK"&Chr(5)&Chr(6)&String(18,Chr(0))
iErr=Err.Number
sErrSource=Err.Source
sErrDescription=Err.Description
OnErrorGoTo0
IfiErr<>0Then
fZip=Array(iErr,sErrSource,sErrDescription)
ExitFunction
EndIf
OnErrorResumeNext
''Startcopyingfilesintothezipfromthesourcefolder.
oShellApp.NameSpace(sTargetZIPFile).CopyHereoShellApp.NameSpace(sSourceFolder).Items
iErr=Err.Number
sErrSource=Err.Source
sErrDescription=Err.Description
OnErrorGoTo0
IfiErr<>0Then
fZip=Array(iErr,sErrSource,sErrDescription)
ExitFunction
EndIf
''Becausethecopyingoccursinaseparateprocess,thescriptwilljustcontinue.RunaDO...LOOPtopreventthefunction
''fromexitinguntilthefileisfinishedzipping.
DoUntiloShellApp.NameSpace(sTargetZIPFile).Items.Count=oShellApp.NameSpace(sSourceFolder).Items.Count
WScript.Sleep1500''如果不成功,增加一下秒数
Loop
fZip=Array(0,"","")
EndFunction

CallfZip("C:\vbs","c:\vbs.zip")



解压缩:
FunctionfUnzip(sZipFile,sTargetFolder)
''CreatetheShell.Applicationobject
DimoShellApp:SetoShellApp=CreateObject("Shell.Application")
''CreatetheFileSystemobject
DimoFSO:SetoFSO=CreateObject("Scripting.FileSystemObject")
''Createthetargetfolderifitisn''talreadythere
IfNotoFSO.FolderExists(sTargetFolder)ThenoFSO.CreateFoldersTargetFolder
''Extractthefilesfromthezipintothefolder
oShellApp.NameSpace(sTargetFolder).CopyHereoShellApp.NameSpace(sZipFile).Items
''Thisisaseperateprocess,sothescriptwouldcontinueeveniftheunzippingisnotdone
''Topreventthis,werunaDO...LOOPonceasecondcheckingtoseeifthenumberoffiles
''inthetargetfolderequalsthenumberoffilesinthezipfile.Ifso,wecontinue.
Do
WScript.Sleep1000‘有时需要更改
LoopWhileoFSO.GetFolder(sTargetFolder).Files.Count<oShellApp.NameSpace(sZipFile).Items.Count
EndFunction

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号