2010-01-18 15:37:26 +0000 2010-01-18 15:37:26 +0000
116
116

7Zip - Kommandozeile : Ordner nach Wildcard-Muster ausschließen?

Irgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es `binIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es und `objIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es `binIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es und -Ordner geben oder auch nicht. Diese möchte ich nicht in das Archiv aufnehmen.

Ich habe Muster wie

-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\bin\*
-x!\bin\*.*

ausprobiert, keines scheint den Ordner `binIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es `binIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es und `objIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es `binIrgendeine Idee, wie man einen Platzhalterpfad (oder mehrere) von einem 7zip-Befehl ausschließen kann?

Ich mache so etwas wie das hier:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

und möchte alle \bin\*.* oder \obj\*.* Ordner ausschließen, die sich unterhalb von “FolderToArchive” befinden.

Um Dateien auszuschließen, können Sie den Parameter -x verwenden. Die Hilfedatei enthält dieses Beispiel für die Verwendung von -x:

7z a -tzip archive.zip *.txt -x!temp.*

Das ist toll, um eine Datei auszuschließen. Aber ich möchte wiederum einen mit einem Platzhalter spezifizierten Ordner ausschließen. Unter meinem “FolderToArchive” gibt es mehrere Ordner, unter diesen Ordnern kann es und -Ordner geben oder auch nicht. Diese möchte ich nicht in das Archiv aufnehmen.

Ich habe Muster wie

-x!bin\*
-x!bin\*.*
-x!\bin\*
-x!\bin\*.*
-x!\bin\*
-x!\bin\*.*

ausprobiert, keines scheint den Ordner auszuschließen. Ist dies einfach eine Einschränkung von 7zip?

Antworten (3)

142
142
142
2010-01-18 15:53:48 +0000

Um die Ordner bin und obj rekursiv auszuschließen, können Sie den Befehl verwenden:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
18
18
18
2014-03-01 10:27:16 +0000

Um den Fehler zu vermeiden, verwenden Sie vorsichtig -r oder -xr.

Angenommen, Sie haben Verzeichnisse wie:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

und führen den Befehl aus:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

was Sie in archive.7z erhalten:

.\path2\src
.\path5\src

Das heißt, die Verzeichnisse `.\path2Um den Fehler zu vermeiden, verwenden Sie vorsichtig -r oder -xr.

Angenommen, Sie haben Verzeichnisse wie:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

und führen den Befehl aus:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

was Sie in archive.7z erhalten:

.\path2\src
.\path5\src

Das heißt, die Verzeichnisse und `.\path5Um den Fehler zu vermeiden, verwenden Sie vorsichtig -r oder -xr.

Angenommen, Sie haben Verzeichnisse wie:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

und führen den Befehl aus:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

was Sie in archive.7z erhalten:

.\path2\src
.\path5\src

Das heißt, die Verzeichnisse `.\path2Um den Fehler zu vermeiden, verwenden Sie vorsichtig -r oder -xr.

Angenommen, Sie haben Verzeichnisse wie:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

und führen den Befehl aus:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

was Sie in archive.7z erhalten:

.\path2\src
.\path5\src

Das heißt, die Verzeichnisse und wurden zum obersten Ordner in archive.7z, und beide Verzeichnisse bin wurden ausgeschlossen.

-x unterstützt nur Pfad/Dateiname relativ zum obersten Ordner im Archiv.

Wenn Sie also nur .\path1\path2\bin ausschließen wollen, aber alle anderen ‘bin’-Verzeichnisse einschließen wollen, sollte der Befehl wie folgt lauten:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

Ich habe versucht, den absoluten Pfad in -x zu verwenden, was aber nicht gelang.


Update:

Es gibt eine Option -spf in 7z für Linux, die mit absolutem Pfad arbeitet.

Laut Marco ist -spf auch unter Windows ab 7-zip 15.14 verfügbar

0
0
0
2020-02-20 10:28:15 +0000

Basierend auf der Antwort von @zhazha und machen Sie deutlicher, wie man Unterordner genau ausschließt. Unter Windows 10, um den Stammordner einer Visual Studio-Lösung zu sichern:

D:\VS2019\Sln1

dann:

//goto the parent of the root folder first which make thing clearer
//not sure what will happen if you go into the root folder
cd D:\VS2019
"<path-of-7z>z.exe" a -tzip -mx0 Sln1_backup.zip Sln1 -x!Sln1\.vs -x!Sln1\Debug -x!Sln1\Release -x!Sln1\lib -x!Sln1\Project1\x64 -x!Sln1\Project2\obj

Dann können Sie sicher sein, dass nur die angegebenen Unterordner ausgeschlossen werden, z.B. Sln1\Project3\obj oder Sln1\Project4\lib werden nicht ungewollt ausgeschlossen. Funktioniert auch für den versteckten großen Ordner .vs.

-mx0 bedeutet Archivierung/keine Komprimierung.