PowerBuilder
PowerBuilder
Exclude Multiple Directories When Adding Files to a ZIP
See more Zip Examples
This example demonstrates how to use the ExcludeDir method to exclude specific directory names when recursively adding files to a ZIP archive.
The ExcludeDir method excludes directories by name. Any directory matching an excluded name is skipped entirely, including all files and subdirectories beneath it.
This is useful for excluding directories such as:
-
.git -
node_modules -
bin -
obj - Temporary or cache directories
Call ExcludeDir once for each directory name to exclude.
Suppose the local filesystem contains:
c:/project/src/main.cpp
c:/project/src/util.cpp
c:/project/bin/app.exe
c:/project/obj/main.obj
c:/project/.git/config
c:/project/node_modules/library/index.js After excluding bin, obj, .git, and node_modules, only the files beneath src are added to the ZIP archive.
The resulting ZIP archive contains:
project/src/main.cpp
project/src/util.cpp
Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Zip
integer li_Recurse
integer li_SaveExtraPath
integer li_ArchiveOnly
integer li_IncludeHidden
integer li_IncludeSystem
li_Success = 0
li_Success = 0
loo_Zip = create oleobject
li_rc = loo_Zip.ConnectToNewObject("Chilkat.Zip")
if li_rc < 0 then
destroy loo_Zip
MessageBox("Error","Connecting to COM object failed")
return
end if
li_Success = loo_Zip.NewZip("project.zip")
if li_Success = 0 then
Write-Debug loo_Zip.LastErrorText
destroy loo_Zip
return
end if
// Exclude several directory names.
//
// Any directory matching one of these names will be skipped
// during recursive file appending.
loo_Zip.ExcludeDir("bin")
loo_Zip.ExcludeDir("obj")
loo_Zip.ExcludeDir(".git")
loo_Zip.ExcludeDir("node_modules")
// Recursively append all files beneath c:/project.
//
// Because saveExtraPath = 1, the ZIP paths will
// include "project/" as the leading directory.
li_Recurse = 1
li_SaveExtraPath = 1
li_ArchiveOnly = 0
li_IncludeHidden = 1
li_IncludeSystem = 0
li_Success = loo_Zip.AppendFilesEx("c:/project",li_Recurse,li_SaveExtraPath,li_ArchiveOnly,li_IncludeHidden,li_IncludeSystem)
if li_Success = 0 then
Write-Debug loo_Zip.LastErrorText
destroy loo_Zip
return
end if
// Write the ZIP archive.
li_Success = loo_Zip.WriteZipAndClose()
if li_Success = 0 then
Write-Debug loo_Zip.LastErrorText
destroy loo_Zip
return
end if
Write-Debug "ZIP archive created successfully."
destroy loo_Zip