手机
当前位置:查字典教程网 >脚本专栏 >vbs >用vbs实现zip功能的脚本
用vbs实现zip功能的脚本
摘要:压缩:FunctionfZip(sSourceFolder,sTargetZIPFile)'Thisfunctionwilladdallof...

压缩:

FunctionfZip(sSourceFolder,sTargetZIPFile)

'ThisfunctionwilladdallofthefilesinasourcefoldertoaZIPfile

'usingWindows'nativefolderZIPcapability.

DimoShellApp,oFSO,iErr,sErrSource,sErrDescription

SetoShellApp=CreateObject("Shell.Application")

SetoFSO=CreateObject("Scripting.FileSystemObject")

'ThesourcefolderneedstohaveaontheEnd

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

【用vbs实现zip功能的脚本】相关文章:

用vbs实现不死帐号的代码

用vbs实现禁用服务

用vbs实现随机读取文件的一行内容的脚本

用vbscript实现从后到前阅读一个文本文件

多进程的vbs脚本

用vbs实现cmd功能的代码

用vbs实现cmd功能

用vbs实现的确定共享文件夹的本地路径?

用vbs实现的一款Worm.Win32.VB.fw病毒专杀

用vbs实现删除名称中有撇号的文件夹

精品推荐
分类导航