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 #
- Client.LoadText, SaveText - Text-Dateien lesen und schreiben
- ellib.FileExists - Datei-Existenz prüfen