Mam następującą strukturę folderów:
- korzeń
- folder 1
- folder2
- folder3
- 7za.exe
Chcę uruchomić narzędzie wiersza polecenia 7-zip, aby skompresować wszystkie pliki folder1
do pliku zip o nazwie folder1.zip
.
Uruchamianie następujących
7za.exe a -tzip folder1.zip folder1\\*.*
tworzy plik zip zgodnie z oczekiwaniami. Jednak gdy otwieram plik zip, ma on w sobie folder o nazwie folder1
, aw nim mam wszystkie pliki, które były w tym folderze. Nie chcę dodawać nazwy folderu do folderu zip, tzn. Chciałbym dodać wszystkie pliki w formacie „płaskim”.
Nie chcę też rekurencyjnie uruchamiać narzędzia wiersza poleceń dla każdego pliku / folderu.
Czy istnieje przełącznik zapewniający tę funkcjonalność?
cd
przejść do folderu 1 i7za.exe a -tzip ..\folder1.zip *.*
?Odpowiedzi:
Z pliku pomocy 7-Zip :
Polecenie, które chcesz, to:
7za.exe a folder1.zip .\folder1\*
Zwróć także uwagę na obsługę symboli wieloznacznych przez 7-Zip. Nie traktuje się go
*.*
jako „wszystkich plików” - oznacza „wszystkie pliki z kropką w nazwie pliku”. Pliki bez rozszerzeń zostaną pominięte. Jeśli naprawdę chcesz wszystkie pliki, po prostu użyj*
zamiast tego.Wreszcie
-tzip
parametr nie jest potrzebny, jeśli nazwa pliku archiwum kończy się na.zip
. 7-Zip jest wystarczająco inteligentny, aby dowiedzieć się, jaki format chcesz w takich przypadkach. Jest to wymagane tylko wtedy, gdy potrzebujesz niestandardowego rozszerzenia (np.7za.exe a -tzip foo.xpi <files>
Dla dodatku Mozilla).źródło
To zadziałało dla mnie
Rozważ strukturę folderów, takich jak C: \ Parent \ SubFolders ..... I chcesz utworzyć plik parent.zip, który będzie zawierał wszystkie pliki i foldery C: \ Parent bez folderu nadrzędnego [tzn. Rozpocznie się od SubFolders .....]
Spowoduje to utworzenie Parent.zip w C: \ Parent
źródło
*.*
oznacza „wszystkich plików”, ale „wszystkie pliki, które mają kropkę jako część nazwy pliku”. Tak więc ta odpowiedź faktycznie pominie pliki, które nie mają rozszerzenia (jest to odnotowane w zaakceptowanej odpowiedzi).Aby rozwinąć zaakceptowaną odpowiedź (nie mogłem tam dodać komentarza):
W Linuksie dodanie „*” nie działało dla mnie, więc skończyło się na wymyślaniu bardziej szczegółowej linii poleceń, która dała pożądany rezultat:
===========
wyjaśnienie skryptu:
Mam nadzieję, że może się przydać komuś.
źródło
*
cudzysłowów (w przeciwnym razie powłoka rozwinie go do plików w tym miejscu).Co powiesz na to. np. Folder / subFolder1, Folder / subfolder2
* Nazwa archiwum będzie folderem nadrzędnym.
Proste prawda?
źródło