wie gezippte ordner mit batch entzippen?
ich arbeite zurzeit an einem installationsprogramm, welches eine heruntergeladene datei (.zip) extrahieren soll zu mehreren in einander verschachtelten ordnern, dabei soll es ohne externe Programme funktiionieren welchen batch befehl kann ich verwenden?
3 Antworten
Mit reinen Windows-Bordmitteln an der Kommandozeile schwierig...
Aber du kannst aus einer normalen Batch auch ein PowerShell-Skript starten...
powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"
Eine andere Möglichkeit wäre, aus der Batch heraus ein VB-Skript zu generieren, welches die in Windows eingebaute ZIP-Funktionalität ansteuert...
Ist hier: https://jagaroth.livejournal.com/69147.html beschrieben und hier: https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line diskutiert.
Auf letztgenannter Seite wurde quasi die selbe Frage gestellt... die meisten Antworten beziehen sich dennoch auf extern benötigte Tools wie unzip.exe, java, 7zip usw. aber darunter hat's eben auch jemand mit Bormitteln über ein dynamisch erzeugtes VB-Skript ganz ohne externe Tools gebastelt... Ausprobiert habe ich es allerdings nicht.
ich habe es jetzt über vbs gelöst, funktioniert ganz hervorragend
Eine weitere, allerdings schon etwas "abgehobene" Variante wäre, das externe Tool (pkunzip.exe o.ä.) mit in die Batch-Datei zu packen, beim Batch-Start eben diese EXE aus dem Skript heraus ins TEMP-Verzeichnis o.ä. schreiben zu lassen und dann ganz einfach die Kommandozeilen-Funktionen von pkunzip.exe (oder unzip.exe oder was auch immer) zu verwenden.
Hört sich abgefahren an, ist es irgendwie auch... und die Möglichkeit, binäre Daten (und somit ganze Programme) in ein Batch-Skript zu packen, ist vergleichsweise selten verwendet. Hierzu wird die Binärdatei zunächst per BASE64 in ein Textformat konvertiert... das ist übrigens genau die Technik, mit der E-Mail-Anhänge an E-Mails angehängt werden, denn der imme rnoch verwendete uralte E-Mail-Standard unterstützt nur den Versand von ASCII-Text! Deshalb ist eine E-Mail mit einem 1-MB-Dateianhang auch immer deutlich größer als der Anhang... weil für die umkodierte Variante mehr "Text" benötigt wird. Beim E-Mail-Empfänger wird der als Text umkodierte Binär-Anhang dann wieder zurück ins Binärformat konvertiert.
Und genau das kannst du per Batch auch machen: Das BASE64-kodierte Programm mit ins Batch-Skript schreiben, beim Skript-Start den "Anhang" auspacken lassen... und schon kannst du das Programm verwenden.
powershell.exe -NoP -NonI -Command "Expand-Archive '.\file.zip' '.\unziped\'"