Das ZIP-Dateiformat ermöglicht es, die Dateigröße zu reduzieren, indem mehrere Dateien in einer einzigen, komprimierten Datei zusammengefasst werden. Dieser Vorgang dient nicht nur der Speicherplatzersparnis, sondern auch der Verschlüsselung von Daten und der einfacheren Weitergabe an Dritte. Im Folgenden wird erläutert, wie Sie Dateien mit PowerShell komprimieren und dekomprimieren können.
Dateien mit PowerShell komprimieren
Wir beginnen mit der Komprimierung von Dateien in ein ZIP-Archiv mithilfe des Cmdlets Compress-Archive
. Dieses Cmdlet benötigt den Pfad zu den zu komprimierenden Dateien – bei mehreren Dateien durch Komma getrennt – und speichert diese am gewünschten Zielort als Archiv.
Öffnen Sie zunächst PowerShell, indem Sie im Startmenü danach suchen. Geben Sie anschließend den folgenden Befehl ein, wobei Sie <PfadZuDateien>
und <ZielPfad>
durch die tatsächlichen Pfade zu den zu komprimierenden Dateien und den gewünschten Zielordner oder den Namen der Archivdatei ersetzen:
Compress-Archive -LiteralPath <PfadZuDateien> -DestinationPath <ZielPfad>
Wenn Sie einen Zielpfad festlegen, geben Sie dem Archiv unbedingt einen Dateinamen, sonst speichert PowerShell es als „.zip“ am angegebenen Ort.
Hinweis: Anführungszeichen um den Pfad sind nur notwendig, wenn der Pfad Leerzeichen enthält.
Um den gesamten Inhalt eines Ordners einschließlich aller Unterordner zu komprimieren, verwenden Sie alternativ folgenden Befehl, wobei Sie <PfadZumOrdner>
und <ZielPfad>
durch den Pfad zu dem zu komprimierenden Ordner und den gewünschten Zielordner oder den Namen der Archivdatei ersetzen:
Compress-Archive -LiteralPath <PfadZumOrdner> -DestinationPath <ZielPfad>
Im vorherigen Beispiel wurde der Pfad zu einem Verzeichnis mit verschiedenen Dateien und Ordnern angegeben, ohne einzelne Dateien zu benennen. PowerShell komprimiert den gesamten Inhalt des Stammverzeichnisses inklusive aller Unterordner.
Das Cmdlet Compress-Archive
bietet die Möglichkeit, Platzhalterzeichen zu verwenden, um die Funktionalität zu erweitern. Mit diesen Zeichen können Sie das Stammverzeichnis ausschließen, nur Dateien in einem Verzeichnis komprimieren oder alle Dateien eines bestimmten Typs auswählen. Um Platzhalter mit Compress-Archive
zu nutzen, verwenden Sie den Parameter -Path
anstelle von -LiteralPath
, da letzterer keine Platzhalter akzeptiert.
Compress-Archive -Path C:PfadZuDatei* -DestinationPath C:PfadZumArchiv.zip
Im obigen Beispiel wurde erläutert, wie Sie das Stammverzeichnis und alle zugehörigen Dateien und Unterverzeichnisse in ein Archiv einbeziehen können. Wenn Sie jedoch den Stammordner aus der Zip-Datei ausschließen möchten, können Sie dies mit einem Platzhalter erreichen. Durch das Hinzufügen eines Sternchens
Compress-Archive -Path C:PfadZuDatei*.jpg -DestinationPath C:PfadZumArchiv.zip
am Ende des Dateipfads weisen Sie PowerShell an, nur die Inhalte im Stammverzeichnis zu erfassen. Das Ergebnis sieht dann in etwa so aus:
Angenommen, Sie haben einen Ordner mit verschiedenen Dateitypen (wie .doc, .txt, .jpg usw.), möchten aber nur alle Dateien eines bestimmten Typs komprimieren. PowerShell kann angewiesen werden, genau diese zu archivieren, ohne die anderen zu berücksichtigen. Die Notation des Befehls würde wie folgt aussehen:
Compress-Archive -Path C:PfadZuDatei*.* -DestinationPath C:PfadZumArchiv.zip
Hinweis: Unterverzeichnisse und die Dateien des Stammordners werden bei dieser Methode nicht in das Archiv aufgenommen.
Wenn Sie ein Archiv erstellen möchten, das nur die Dateien im Stammverzeichnis und allen seinen Unterverzeichnissen komprimiert, verwenden Sie den Platzhalter *.*
, um diese zu zippen. Die Befehlszeile sieht dann etwa so aus:
Compress-Archive -Path C:PfadZuDateien -Update -DestinationPath C:PfadZumArchiv.zip
Hinweis: Unterverzeichnisse und die Dateien des Stammordners werden bei dieser Methode nicht in das Archiv aufgenommen.
Selbst nachdem ein Archiv erstellt wurde, kann eine vorhandene ZIP-Datei mithilfe des Parameters -Update
aktualisiert werden. Dies ermöglicht das Ersetzen älterer Dateiversionen im Archiv durch neuere mit dem gleichen Namen sowie das Hinzufügen von Dateien, die im Stammverzeichnis erstellt wurden. Der entsprechende Befehl sieht in etwa so aus:
So entpacken Sie Dateien mit PowerShell: PowerShell ist nicht nur zum Zippen, sondern auch zum Entpacken von Archiven geeignet. Der Vorgang ist sogar noch einfacher als das Komprimieren. Sie benötigen lediglich die Quelldatei und einen Zielpfad für die extrahierten Daten. Öffnen Sie PowerShell und geben Sie den folgenden Befehl ein, wobei Sie <PfadZurZipDatei>
und <ZielPfad>
durch den tatsächlichen Pfad zur zu entpackenden ZIP-Datei und den gewünschten Zielordner ersetzen:
Expand-Archive -LiteralPath <PfadZurZipDatei> -DestinationPath <ZielPfad>
und
mit dem Pfad zu den zu komprimierenden Dateien und dem Namen bzw. Ordner, in den Sie die Dateien speichern möchten.
Der angegebene Zielordner wird mit dem Inhalt des Archivs gefüllt. Wenn der Ordner noch nicht existierte, erstellt PowerShell ihn und platziert den Inhalt darin.
Wird der Parameter -DestinationPath
weggelassen, entpackt PowerShell den Inhalt standardmäßig in das aktuelle Stammverzeichnis und verwendet den Namen der ZIP-Datei zur Erstellung eines neuen Ordners.
Im vorherigen Beispiel würde PowerShell bei Weglassung von -DestinationPath
den Ordner „Archiv“ im Pfad „C:\Users\brady“ erstellen und die Dateien aus dem Archiv dorthin extrahieren.
Ist der Zielordner bereits vorhanden, gibt PowerShell eine Fehlermeldung zurück, wenn versucht wird, Dateien zu entpacken. Mit dem Parameter -Force
können Sie PowerShell jedoch dazu zwingen, die vorhandenen Daten durch die neuen zu überschreiben.
Sie sollten den Parameter -Force
nur verwenden, wenn die alten Dateien nicht mehr benötigt werden, da dies die Dateien unwiederbringlich ersetzt.