2011-09-26 16:51:38 +0000 2011-09-26 16:51:38 +0000
86
86

Erstellen eines Archivs aus einem Verzeichnis, ohne dass der Verzeichnisname dem Archiv hinzugefügt wird

Ich habe die folgende Ordnerstruktur:

  • Stammverzeichnis
  • Ordner1
  • Ordner2
  • Ordner3
  • 7za.exe

Ich möchte das 7-zip-Befehlszeilentool ausführen, um alle Dateien in folder1 in eine Zip-Datei namens folder1.zip zu komprimieren.

Das Ausführen der folgenden

7za.exe a -tzip folder1.zip folder1\*.*

erzeugt wie erwartet eine Zip-Datei. Wenn ich jedoch die Zip-Datei öffne, enthält sie einen Ordner mit dem Namen folder1, und darin befinden sich alle Dateien, die sich in diesem Ordner befanden. Ich möchte nicht, dass der Ordnername dem zip-Ordner hinzugefügt wird, d. h. ich möchte alle Dateien in einem “flachen” Dateiformat hinzufügen.

Ich möchte auch nicht das Befehlszeilentool für jede einzelne Datei/Ordner rekursiv ausführen.

Gibt es einen Schalter, der diese Funktionalität bietet?

Antworten (4)

141
141
141
2011-09-26 17:25:54 +0000

Aus der 7-Zip Hilfe Datei:

a (Add) command

Fügt Dateien zum Archiv hinzu.

Beispiele

`7z a archive1.zip subdirAus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

fügt alle Dateien und Unterordner aus dem Ordner subdir zum Archiv archive1.zip hinzu. Die Dateinamen im Archiv enthalten das Präfix subdir.

7z a archive2.zip .\subdir\*

fügt alle Dateien und Unterordner aus dem Ordner subdir dem Archiv archive2.zip hinzu. Die Dateinamen im Archiv enthalten kein Präfix subdir.

`cd /D c:\dir1Aus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

`7z a archive1.zip subdirAus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

fügt alle Dateien und Unterordner aus dem Ordner subdir zum Archiv archive1.zip hinzu. Die Dateinamen im Archiv enthalten das Präfix subdir.

7z a archive2.zip .\subdir\*

fügt alle Dateien und Unterordner aus dem Ordner subdir dem Archiv archive2.zip hinzu. Die Dateinamen im Archiv enthalten kein Präfix subdir.

`7z a c:\archive3.zip dir2\dir3Aus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

`7z a archive1.zip subdirAus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

fügt alle Dateien und Unterordner aus dem Ordner subdir zum Archiv archive1.zip hinzu. Die Dateinamen im Archiv enthalten das Präfix subdir.

7z a archive2.zip .\subdir\*

fügt alle Dateien und Unterordner aus dem Ordner subdir dem Archiv archive2.zip hinzu. Die Dateinamen im Archiv enthalten kein Präfix subdir.

`cd /D c:\dir1Aus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

`7z a archive1.zip subdirAus der [ 7-Zip Hilfe ]0x3& Datei:

[ a (Add) command ]0x3&

Fügt Dateien zum Archiv hinzu.

Beispiele

fügt alle Dateien und Unterordner aus dem Ordner subdir zum Archiv archive1.zip hinzu. Die Dateinamen im Archiv enthalten das Präfix subdir.

7z a archive2.zip .\subdir\*

fügt alle Dateien und Unterordner aus dem Ordner subdir dem Archiv archive2.zip hinzu. Die Dateinamen im Archiv enthalten kein Präfix subdir.

Die Dateinamen im Archiv c:\archive3.zip werden das Präfix dir2\dir3\ enthalten, aber sie werden nicht das Präfix c:\dir1\ enthalten.

Der Befehl, den Sie brauchen würden, wäre also: 7za.exe a folder1.zip .\folder1\*

Achten Sie außerdem auf die Behandlung von Platzhaltern durch 7-Zip. Es behandelt *.* nicht als “alle Dateien” – es bedeutet “alle Dateien mit einem Punkt im Dateinamen”. Dateien ohne Erweiterung werden übersehen. Wenn Sie wirklich alle Dateien wollen, verwenden Sie stattdessen einfach *.

Schließlich wird der Parameter -tzip nicht benötigt, wenn der Dateiname des Archivs mit .zip endet. 7-Zip ist intelligent genug, um herauszufinden, welches Format Sie in diesen Fällen wünschen. Er 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).

2
2
2
2016-06-07 18:04:40 +0000

Dies funktionierte bei mir

Betrachten Sie eine Ordnerstruktur wie C:\Parent\SubFolders….. Und Sie möchten die Datei parent.zip erstellen, die alle Dateien und Ordner von C:\Parent ohne den übergeordneten Ordner enthält [d. h. sie beginnt bei SubFolders…..]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

Damit wird Parent.zip in C:\Parent erstellt

1
1
1
2018-07-17 10:49:04 +0000

Nur um die akzeptierte Antwort zu erweitern (ich war nicht in der Lage, dort einen Kommentar hinzuzufügen):

Unter Linux hat das Hinzufügen von ‘*’ bei mir nicht funktioniert, also habe ich mir eine ausführlichere Befehlszeile ausgedacht, die das gewünschte Ergebnis lieferte:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

Skripterklärung:

  • speichert den aktuellen Verzeichnispfad, um ihn später zu verwenden;
  • navigiert zu dem Verzeichnis, das archiviert werden soll;
  • erstellt das Archiv (beachten Sie ‘.’ (Punkt) am Ende);
  • geht zurück zum ursprünglichen Verzeichnis;
  • löscht die Variable, die den ursprünglichen Verzeichnispfad gespeichert hat

Ich hoffe, es ist für jemanden nützlich.

-1
-1
-1
2017-03-17 05:23:32 +0000

Wie wäre es damit. z.B. Ordner/Unterordner1, Ordner/Unterordner2

alle Unterordner auswählen > Rechtsklick dann Archiv erstellen > beliebiges Format auswählen

*Der Archivname wäre der übergeordnete Ordner.

Einfach richtig?