Ich habe folgende Ordnerstruktur:
- Wurzel
- folder1
- folder2
- folder3
- 7za.exe
Ich möchte das 7-zip-Befehlszeilentool ausführen, um alle Dateien in folder1
eine ZIP-Datei mit dem Namen zu komprimieren folder1.zip
.
Folgendes ausführen
7za.exe a -tzip folder1.zip folder1\\*.*
erzeugt erwartungsgemäß eine zip-Datei. Wenn ich jedoch die ZIP-Datei öffne, befindet sich darin ein Ordner namens folder1
und darin befinden sich alle Dateien, die sich in diesem Ordner befanden. Ich möchte nicht, dass der Ordnername zum ZIP-Ordner hinzugefügt wird, dh, ich möchte alle Dateien in einem "Flat" -Dateiformat hinzufügen.
Ich möchte das Befehlszeilentool auch nicht rekursiv für jede einzelne Datei / jeden einzelnen Ordner ausführen.
Gibt es einen Schalter, der diese Funktionalität bietet?
cd
in ordner1 und7za.exe a -tzip ..\folder1.zip *.*
?Antworten:
Aus der 7-Zip- Hilfedatei:
Der gewünschte Befehl wäre also:
7za.exe a folder1.zip .\folder1\*
Achten Sie auch auf den Umgang von 7-Zip mit Platzhaltern. Es wird nicht
*.*
als "alle Dateien" behandelt - es bedeutet "alle Dateien mit einem Punkt im Dateinamen". Dateien ohne Erweiterung werden übersehen. Wenn Sie wirklich alle Dateien möchten, verwenden Sie*
stattdessen einfach .Schließlich wird der
-tzip
Parameter nicht benötigt, wenn der Archivdateiname auf endet.zip
. 7-Zip ist intelligent genug, um herauszufinden, welches Format Sie in diesen Fällen benötigen. Dies ist nur erforderlich, wenn Sie eine benutzerdefinierte Erweiterung wünschen (z. B.7za.exe a -tzip foo.xpi <files>
für ein Mozilla-Add-On).quelle
Das hat bei mir funktioniert
Betrachten Sie die Ordnerstruktur wie C: \ Parent \ SubFolders ..... Und Sie möchten parent.zip erstellen, das alle Dateien und Ordner C: \ Parent ohne übergeordneten Ordner enthält.
Dadurch wird Parent.zip in C: \ Parent erstellt
quelle
*.*
"alle Dateien" bedeutet, sondern "alle Dateien, die einen Punkt als Teil des Dateinamens haben." In dieser Antwort werden also Dateien ausgelassen, die keine Erweiterung haben (dies wird in der akzeptierten Antwort vermerkt).Nur um die akzeptierte Antwort zu erweitern (ich konnte dort keinen Kommentar hinzufügen):
Unter Linux funktionierte das Hinzufügen von '*' nicht für mich, so dass ich eine ausführlichere Befehlszeile zusammenstellte, die das gewünschte Ergebnis lieferte:
===========
Skript Erklärung:
Ich hoffe, es könnte für jemanden nützlich sein.
quelle
*
in Anführungszeichen zu setzen (andernfalls erweitert die Shell sie auf die Dateien an dieser Stelle).Wie wäre es damit. zB Ordner / Unterordner1, Ordner / Unterordner2
* Der Archivname ist der übergeordnete Ordner.
Einfach richtig?
quelle