In Windows können Sie einige Dateien mit komprimieren
Rechtsklick → Senden an → Komprimierter (komprimierter) Ordner
Und entpacken Sie durch Doppelklick auf die .zip
Datei und extrahieren Sie die Dateien.
Gibt es eine Möglichkeit, diese Fähigkeiten aus einem Skript (.bat-Datei) anzuwenden, ohne dass Software von Drittanbietern installiert werden muss ?
windows
batch-file
zip
Roee Gavirel
quelle
quelle
Antworten:
Das war 2013 noch nicht möglich. Microsoft hat hierfür keine ausführbare Datei bereitgestellt.
Unter diesem Link finden Sie eine VBS-Methode, um dies zu tun. /superuser/201371/create-zip-folder-from-the-command-line-windows
Ab Windows 8 wird .NET Framework 4.5 standardmäßig installiert. Wenn System.IO.Compression.ZipArchive und PowerShell verfügbar sind, können Sie dazu Skripts schreiben (siehe https://stackoverflow.com/a/26843122/71312)
quelle
Um die PowerShell-Lösung von Steven Penny zu erweitern, können Sie sie in eine Batch-Datei einbinden, indem Sie Powershell.exe wie folgt aufrufen:
Wie Ivan Shilo sagte, funktioniert dies nicht mit PowerShell 2, sondern erfordert PowerShell 3 oder höher und .NET Framework 4.
quelle
'.'
, z. B.:powershell.exe -nologo -noprofile -command "& { Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.'); }"
& {}
? Mit PS5 funktioniert das auch:powershell.exe -nologo -noprofile -command "Add-Type -A 'System.IO.Compression.FileSystem'; [IO.Compression.ZipFile]::ExtractToDirectory('foo.zip', '.');"
Ab .NET 4.5 kann PowerShell Folgendes tun:
Für die letzten beiden Zeilen
bar
undfoo
kann durch den Namen ersetzt werden, den der Ordner haben soll, oder wie auch immer der Name des bereits vorhandenen Ordners lautet.foo.zip
In beiden Fällen fungiert es als Zip-Datei zum Speichern oder Entpacken.quelle
Wenn Sie Java installiert haben, können Sie mit dem folgenden
jar
Befehl in ein ZIP-Archiv komprimieren :quelle
PowerShell 5.0
Von können
Microsoft.PowerShell.Archive
Sie verwenden:Compress-Archive
Expand-Archive
Z.B:
result.zip
Aus dem gesamtenTest
Ordner erstellen :Extrahieren Sie den Inhalt von
result.zip
im angegebenenTest
Ordner:quelle
powershell Compress-Archive -Path C:\SomeFile.ext -DestinationPath C:\SomeFile.zip
direkt über die Befehlszeile arbeiten, ohne ein Skript erstellen zu müssen (vorausgesetzt, Sie haben Powershell v5 installiert, was Sie zumindest unter Windows 7 tun können).Es ist nicht gerade eine ZIP-Datei, aber die einzige Möglichkeit, eine Datei mit Windows-Tools zu komprimieren, ist:
So dekomprimieren Sie:
Erweitertes Beispiel (von ss64.com):
Weitere Informationen: makecab , expand , makecab für fortgeschrittene Zwecke
quelle
Verwenden von 7-Zip:
Zip : Sie haben einen Ordner
foo
und möchten ihn komprimierenmyzip.zip
Entpacken : Sie möchten es (
myzip.zip
) in das aktuelle Verzeichnis entpacken (./
)quelle
without the need to install any 3rd party
Ich habe versucht, genau diese Frage zu beantworten, und nach meinen Recherchen scheint die Antwort von DiryBoy korrekt zu sein.
Ich habe festgestellt, dass das Programm compact.exe Dateien komprimiert, aber keine stark komprimierte Datei (oder einen Satz von Dateien) erstellt. Dies ähnelt der Option, die Sie erhalten, wenn Sie in Windows mit der rechten Maustaste auf einen Laufwerksbuchstaben oder eine Partition klicken. Sie haben die Möglichkeit, Bereinigungen durchzuführen (temporäre Dateien usw. zu entfernen) sowie Dateien zu komprimieren. Auf die komprimierten Dateien kann weiterhin zugegriffen werden, sie werden jedoch nur komprimiert, um Speicherplatz auf einem Laufwerk mit wenig Speicherplatz zu schaffen.
Ich habe auch compress.exe gefunden, die ich zufällig auf meinem Computer hatte. Es ist auf den meisten Windows-Computern nicht nativ und Teil des 2003 Resource Kits. Es erstellt zwar eine Art komprimierte Datei, ähnelt jedoch eher Dateien von einer Windows-Setup-Festplatte (hat den Unterstrich als letztes Zeichen der Dateierweiterung oder des Namens). Und der Befehl extract.exe extrahiert diese Dateien.
Das Mantra lautet jedoch: Wenn es nativ über die GUI ausgeführt werden kann, gibt es wahrscheinlich eine Möglichkeit, dies über Batch, .vbs oder eine andere Art von Skript in der Befehlszeile zu tun. Da Windows die Option "Senden an" zum Erstellen einer Zip-Datei hatte, wusste ich, dass es eine Möglichkeit geben musste, dies über die Befehlszeile zu tun, und fand einige Optionen.
Hier ist ein großartiger Link, der zeigt, wie eine Datei mit nativen Windows-Befehlen komprimiert wird.
/superuser/110991/can-you-zip-a-file-from-the-command-prompt-using-only-windows-built-in-capabili
Ich habe es mit einem Verzeichnis getestet, das mehrere verschachtelte Dateien und Ordner enthält, und es hat perfekt funktioniert. Folgen Sie einfach dem Format der Befehlszeile.
Es gibt auch eine Möglichkeit, die Dateien über die Befehlszeile zu entpacken, die ich ebenfalls gefunden habe. Eine Möglichkeit besteht darin, ein Explorer-Fenster zu öffnen, in dem der Inhalt der komprimierten Datei angezeigt wird. Einige von ihnen verwenden auch Java, das nicht unbedingt für Windows typisch ist, aber so häufig vorkommt, dass es fast so scheint.
/superuser/149489/does-windows-7-have-unzip-at-the-command-line-installed-by-default
Wie entpacke ich eine Datei über die Kommandozeile?
quelle
Sie können ein VBScript-Skript verwenden, das in eine BAT-Datei eingeschlossen ist. Dieser Code arbeitet mit einem relativen PFAD.
Es sind keine Tools oder Abhängigkeiten von Drittanbietern erforderlich. Einfach einstellen
SOURCEDIR
undOUTPUTZIP
.Dateiname: ZipUp.bat
Anwendungsbeispiel
Alternativ können Sie diese Datei parametrisieren , indem Sie die Linie ersetzt
CScript _zipup.vbs %SOURCEDIR% %OUTPUTZIP%
mitCScript _zipup.vbs %1 %2
, in diesem Fall kann es sogar noch einfacher aus einfach durch Aufruf aufgerufen werdenCALL ZipUp C:\Source\Dir C:\Archive.zip
.quelle
Ich habe ein Problem mit all diesen Lösungen.
Sie sind nicht genau gleich und erstellen alle Dateien, die einen geringfügigen Größenunterschied zu den Dateien aufweisen, die
RMB --> send to --> compressed (zipped) folder
aus demselben Quellordner stammen. Der größte Größenunterschied, den ich hatte, ist 300 KB Unterschied (Skript> Handbuch), hergestellt mit:(Beachten Sie die -CompressionLevel . Es gibt drei mögliche Werte : Fastest, NoCompression & Optimal, (Standard: Optimal))
Ich wollte eine .bat-Datei erstellen, die einen WordPress-Plugin-Ordner, an dem ich arbeite, automatisch in ein .zip-Archiv komprimiert, damit ich sie auf die WordPress-Site hochladen und das Plugin testen kann.
Aber aus irgendeinem Grund funktioniert es mit keiner dieser automatischen Komprimierungen, aber mit der manuellen RMB-Komprimierung, was ich wirklich seltsam finde.
Und die vom Skript generierten ZIP-Dateien brechen die WordPress-Plugins tatsächlich so weit, dass sie nicht mehr aktiviert werden können und auch nicht aus WordPress heraus gelöscht werden können. Ich muss SSH in die "Rückseite" des Servers und die hochgeladenen Plugin-Dateien selbst manuell löschen. Während die manuell RMB-generierten Dateien normal funktionieren.
quelle
Wenn Sie dies als Teil eines Skripts tun müssen, verwenden Sie am besten Java. Angenommen, das Verzeichnis bin befindet sich in Ihrem Pfad (in den meisten Fällen), können Sie die Befehlszeile verwenden:
Wenn sich Java nicht auf Ihrem Pfad befindet, verweisen Sie direkt darauf:
quelle
Open Source ist dein Freund :-)
Hier ist das Entpacken : http://gnuwin32.sourceforge.net/packages/unzip.htm
Es gibt auch einen ZIP-Befehl: http://gnuwin32.sourceforge.net/packages/zip.htm
Der Download der Binärdateien reicht aus.
quelle
Dies ist eine aktualisierte Version der Antwort von @ PodTech.io
In dieser Version ist der gesamte vbs-Code korrekt in der Batch-Datei maskiert. Es wird auch in einer Unterroutine erstellt, die mit einer einzelnen Zeile von überall in Ihrem Batch-Skript aufgerufen werden kann:
quelle
Sie sagen, Sie versuchen dies ohne Software von Drittanbietern. Ich bin mir nicht sicher, ob Sie .NET-Software von Drittanbietern in Betracht ziehen würden.
Sie können jedoch in .NET ein eigenes Befehlszeilenprogramm erstellen. Es sollten nicht mehr als ein paar Codezeilen erforderlich sein.
ZipFile-Klasse
quelle
Nach der Antwort von @Jason Duffett und seinen Kommentaren gibt es hier ein Skript, das vom Benutzer Eingabe und Ausgabe (Dateiname bzw. Verzeichnisname) erhält :
Verwendungszweck:
quelle
So komprimieren Sie eine Datei:
quelle
Sie können eine komprimierte oder native komprimierte Windows-Datei mit dem Befehl Erweitern dekomprimieren , z
quelle
Expand file.zip file
Kopiert einfach die Zip-Datei in eine andere Datei ohne die Erweiterung. Die ZIP-Datei wird nicht in einen Ordner dekomprimiert.