Ziplib Objekt
Zuletzt geändert: 29.01.2026 17:26

ZIPLIB-Objekt (iScript) #

Das ZIPLIB-Objekt ermöglicht das Erstellen, Lesen und Bearbeiten von ZIP-Archiven.

Set Zip = Client.CreateObject("ZIPLIB", "")

Eigenschaften #

ArchiveFile #

property ArchiveFile: string read/write

Pfad zur ZIP-Datei. Bei Compress wird diese Datei erstellt, bei Scan, Extract oder ExtractAll wird sie gelesen. Der Dateiname sollte mit der Erweiterung .zip angegeben werden.

OverwriteFiles #

property OverwriteFiles: Boolean read/write

Wenn True, werden existierende Dateien beim Entpacken überschrieben. Standardwert ist False.

CompressionLevel #

property CompressionLevel: Integer read/write

Komprimierungsstufe von 0 bis 6. Höhere Werte komprimieren besser, aber langsamer. 0 = keine Kompression, 6 = maximale Kompression.

Password #

property Password: string read/write

Passwort für die Verschlüsselung des Archivs. Wenn leer, wird keine Verschlüsselung verwendet.

EncryptionAlgorithm #

property EncryptionAlgorithm: Integer write

Verschlüsselungsalgorithmus. Nur relevant wenn Password gesetzt ist.

Wert Konstante Beschreibung
0 eaDefault Standard ZIP-Verschlüsselung (schwach)
1 eaAESWeak AES 128-bit (gleicher Salt für alle Dateien)
2 eaAESStrong AES 192-bit (individueller Salt pro Datei)
3 eaAESMaximum AES 256-bit (individueller Salt pro Datei)

Hinweis: AES-Verschlüsselung ist kompatibel mit WinZip 9.0. Für 128-bit wird ein 32-stelliges, für 256-bit ein 64-stelliges Passwort empfohlen.

RecurseSubdirectories #

property RecurseSubdirectories: Boolean read/write

Wenn True, werden bei IncludeFiles auch Unterverzeichnisse durchsucht.

ExtractToPath #

property ExtractToPath: string read/write

Zielverzeichnis für das Entpacken. Muss mit Backslash enden (z.B. C:\Temp\). Falls das Verzeichnis nicht existiert, wird es automatisch erstellt.

ZipComment #

property ZipComment: string read/write

Globaler Kommentar für das ZIP-Archiv. Vor Compress setzen, um einen Kommentar hinzuzufügen. Nach Scan enthält diese Eigenschaft den Kommentar aus dem Archiv.

Methoden zum Erstellen von Archiven #

IncludeFiles #

procedure IncludeFiles(Filenames: string)

Fügt Dateien zur Liste der zu komprimierenden Dateien hinzu. Mehrere Dateien werden durch Pipe-Zeichen (|) getrennt. Wildcards (*, ?) werden unterstützt.

Es wird kein Fehler ausgelöst, wenn eine Datei nicht vorhanden ist oder ein Suchmuster kein Ergebnis liefert.

Beispiele:

  • "C:\Daten\rechnung.pdf" - Einzelne Datei
  • "C:\Daten\*.pdf" - Alle PDF-Dateien
  • "C:\Daten\a.pdf|C:\Daten\b.pdf" - Mehrere Dateien

ExcludeFiles #

procedure ExcludeFiles(Filenames: string)

Schließt Dateien von der Komprimierung aus. Syntax wie bei IncludeFiles.

Compress #

procedure Compress

Erstellt das ZIP-Archiv. Die Dateien müssen vorher über IncludeFiles hinzugefügt werden. Falls die Zieldatei existiert, wird sie überschrieben (wenn OverwriteFiles = True).

AppendFiles #

procedure AppendFiles

Fügt Dateien zu einem bestehenden Archiv hinzu, ohne es neu zu erstellen.

Reset #

procedure Reset

Setzt den Zustand des Objekts zurück. Alle Eigenschaften werden auf Standardwerte gesetzt, die Dateiliste wird geleert.

Methoden zum Lesen von Archiven #

Scan #

procedure Scan

Liest die Struktur eines vorhandenen Archivs. Nach dem Aufruf können die Datei-Eigenschaften (FileCount, FileCompressedName, etc.) abgefragt werden.

Extract #

procedure Extract(Filenames: string)

Entpackt bestimmte Dateien aus dem Archiv. Die Dateien werden in ExtractToPath geschrieben.

Beispiele:

  • "dokument.pdf" - Einzelne Datei
  • "*.pdf" - Alle PDF-Dateien
  • "ordner/" - Ganzen Ordner (mit Slash am Ende)

ExtractAll #

procedure ExtractAll

Entpackt alle Dateien aus dem Archiv nach ExtractToPath.

Delete #

procedure Delete(Filenames: string)

Löscht Dateien aus einem bestehenden Archiv. Syntax wie bei Extract.

Update #

procedure Update(Filenames: string)

Aktualisiert Dateien im Archiv mit neueren Versionen von der Festplatte.

Abort #

procedure Abort

Bricht eine laufende Komprimierung oder Dekomprimierung ab. Teilweise geschriebene Dateien werden gelöscht.

Eigenschaften für Datei-Informationen #

Nach Scan oder Compress stehen folgende Informationen zur Verfügung:

FileCount #

function FileCount: Integer

Anzahl der Dateien im Archiv.

FileCompressedName #

function FileCompressedName(FileIndex: Integer): string

Name der Datei innerhalb des Archivs (0-basierter Index).

FileDecompressedName #

function FileDecompressedName(FileIndex: Integer): string
procedure SetFileDecompressedName(FileIndex: Integer; Value: string)

Name der Datei beim Entpacken. Kann geändert werden, um Dateien umzubenennen.

FileCompressedSize #

function FileCompressedSize(FileIndex: Integer): Int64

Größe der komprimierten Daten in Bytes.

FileDecompressedSize #

function FileDecompressedSize(FileIndex: Integer): Int64

Größe der unkomprimierten Datei in Bytes.

FileCompressedDate #

function FileCompressedDate(FileIndex: Integer): Int64

Änderungsdatum der Datei (als Timestamp).

FileCRC #

function FileCRC(FileIndex: Integer): Int64

CRC-Prüfsumme der Datei.

FilePasswordRequired #

function FilePasswordRequired(FileIndex: Integer): Boolean

True, wenn die Datei verschlüsselt ist und ein Passwort benötigt.

FileAttributes #

function FileAttributes(FileIndex: Integer): Integer
procedure SetFileAttributes(FileIndex: Integer; Value: Integer)

Dateiattribute (Bitmask):

Wert Bedeutung
1 Readonly
2 Hidden
4 System
16 Directory
32 Archive

FileComment #

function FileComment(FileIndex: Integer): string
procedure SetFileComment(FileIndex: Integer; Value: string)

Kommentar für eine einzelne Datei im Archiv.

FileCompressionLevel #

function FileCompressionLevel(FileIndex: Integer): Integer
procedure SetFileCompressionLevel(FileIndex: Integer; Value: Integer)

Komprimierungsstufe einer einzelnen Datei.

Erweiterte Methoden #

SetConfig / GetConfig #

procedure SetConfig(Key: string; Value: string)
function GetConfig(Key: string): string

Zugriff auf erweiterte Konfigurationsoptionen der Bibliothek.

FindFirstPopulatedFolder #

function FindFirstPopulatedFolder: string

Ermittelt den gemeinsamen Wurzelordner aller Dateien im Archiv. Nützlich, wenn ein Archiv einen einzelnen Hauptordner enthält. Vorher muss Scan aufgerufen werden.

ExtractFirstPopulatedFolder #

procedure ExtractFirstPopulatedFolder

Entpackt den Inhalt des Hauptordners direkt nach ExtractToPath, ohne den Hauptordner selbst zu erstellen.

ExtractFolder #

procedure ExtractFolder(Folder: string)

Entpackt nur einen bestimmten Ordner aus dem Archiv.

Beispiele #

A. ZIP-Archiv erstellen #

Option Explicit

Dim Zip
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Export\dokumente.zip"
Zip.OverwriteFiles = True
Zip.CompressionLevel = 6

' Dateien hinzufügen (Pipe-getrennt)
Zip.IncludeFiles "C:\Daten\rechnung1.pdf|C:\Daten\rechnung2.pdf|C:\Daten\index.xml"

' ZIP erstellen
Zip.Compress

Set Zip = Nothing
ellib.ShowMessage "ZIP-Archiv erstellt!"

B. ZIP-Archiv mit Passwort erstellen #

Option Explicit

Dim Zip
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Export\geheim.zip"
Zip.OverwriteFiles = True
Zip.Password = "MeinGeheimesPasswort123"
Zip.EncryptionAlgorithm = 2  ' AES Strong

Zip.IncludeFiles "C:\Daten\vertraulich.pdf"
Zip.Compress

Set Zip = Nothing

C. ZIP-Archiv entpacken #

Option Explicit

Dim Zip
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Download\archiv.zip"
Zip.ExtractToPath = "C:\Entpackt\"
Zip.OverwriteFiles = True

Zip.ExtractAll

Set Zip = Nothing
ellib.ShowMessage "Archiv entpackt!"

D. Inhalt eines ZIP-Archivs auflisten #

Option Explicit

Dim Zip, i, msg
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Download\archiv.zip"
Zip.Scan

msg = "Dateien im Archiv:" & vbCrLf & vbCrLf
For i = 0 To Zip.FileCount - 1
  msg = msg & Zip.FileCompressedName(i) & _
        " (" & Zip.FileDecompressedSize(i) & " Bytes)" & vbCrLf
Next

Set Zip = Nothing
ellib.ShowMessage msg

E. Nur bestimmte Dateien entpacken #

Option Explicit

Dim Zip
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Download\archiv.zip"
Zip.ExtractToPath = "C:\Entpackt\"
Zip.OverwriteFiles = True

' Nur PDF-Dateien entpacken
Zip.Extract "*.pdf"

Set Zip = Nothing

F. Dateien zu bestehendem Archiv hinzufügen #

Option Explicit

Dim Zip
Set Zip = Client.CreateObject("ZIPLIB", "")

Zip.ArchiveFile = "C:\Export\dokumente.zip"
Zip.IncludeFiles "C:\Daten\nachtrag.pdf"
Zip.AppendFiles

Set Zip = Nothing
ellib.ShowMessage "Datei hinzugefügt!"

Siehe auch #