Sample code for 30+ languages & platforms
Tcl

Unzip all Files to a Single Directory (Ignoring Subdirectories in Zip)

See more Zip Examples

Demonstrates how to unzip all files into a single directory, ignoring the internal directory structure of the files in the .zip.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

set outDir "c:/temp/testUnzipDir"

# Make sure our output directory exists.
set fac [new_CkFileAccess]

set success [CkFileAccess_DirEnsureExists $fac $outDir]
if {$success == 0} then {
    puts [CkFileAccess_lastErrorText $fac]
    delete_CkFileAccess $fac
    exit
}

set zip [new_CkZip]

# In this example, the xml_files.zip contains some files in the subdirectories "dir1" and also "dir2/dir3".

# a1.xml
# b1.xml
# c1.xml
# dir1/a2.xml
# dir1/c2.xml
# dir2/dir3/c3.xml

set success [CkZip_OpenZip $zip "qa_data/zips/xml_files.zip"]
if {$success == 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkFileAccess $fac
    delete_CkZip $zip
    exit
}

# Unzip all files into the directory c:/temp/testUnzipDir
set numUnzipped [CkZip_UnzipInto $zip $outDir]
if {$numUnzipped < 0} then {
    puts [CkZip_lastErrorText $zip]
    delete_CkFileAccess $fac
    delete_CkZip $zip
    exit
}

puts "Num unzipped = $numUnzipped"

# After unzipping via UnzipInto, we have this:

# c:\temp\testUnzipDir\a1.xml
# c:\temp\testUnzipDir\b1.xml
# c:\temp\testUnzipDir\c1.xml
# c:\temp\testUnzipDir\a2.xml
# c:\temp\testUnzipDir\c2.xml
# c:\temp\testUnzipDir\c3.xml

CkZip_CloseZip $zip

puts "Success."

delete_CkFileAccess $fac
delete_CkZip $zip