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

Tworzenie archiwum z katalogu bez dodawania nazwy katalogu do archiwum

Mam następującą strukturę folderów:

  • root
  • folder1
  • folder2
  • folder3
  • 7za.exe

Chcę uruchomić narzędzie wiersza poleceń 7-zip, aby skompresować wszystkie pliki w folder1 do pliku zip o nazwie folder1.zip.

Uruchomienie następującego

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

tworzy plik zip zgodnie z oczekiwaniami. Jednak kiedy otwieram plik zip, ma on folder o nazwie folder1, a wewnątrz niego mam wszystkie pliki, które były w tym folderze. Nie chcę, aby nazwa folderu została dodana do folderu zip, tj. Chciałbym dodać wszystkie pliki w formacie pliku “Flat”.

Nie chcę również rekursywnie uruchamiać narzędzia wiersza poleceń dla każdego pojedynczego pliku / folderu.

Czy istnieje przełącznik, który zapewnia taką funkcjonalność?

Odpowiedzi (4)

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

Z pliku Pomoc 7-Zip :

a (Add) command

Dodaje pliki do archiwum.

Przykłady

`7z a archive1.zip subdirZ pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive1.zip. Nazwy plików w archiwum będą zawierały prefiks subdir.

7z a archive2.zip .\subdir\*

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive2.zip. Nazwy plików w archiwum nie będą zawierały przedrostka subdir.

`cd /D c:\dir1Z pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

`7z a archive1.zip subdirZ pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive1.zip. Nazwy plików w archiwum będą zawierały prefiks subdir.

7z a archive2.zip .\subdir\*

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive2.zip. Nazwy plików w archiwum nie będą zawierały przedrostka subdir.

`7z a c:\archive3.zip dir2\dir3Z pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

`7z a archive1.zip subdirZ pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive1.zip. Nazwy plików w archiwum będą zawierały prefiks subdir.

7z a archive2.zip .\subdir\*

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive2.zip. Nazwy plików w archiwum nie będą zawierały przedrostka subdir.

`cd /D c:\dir1Z pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

`7z a archive1.zip subdirZ pliku [ Pomoc 7-Zip ]0x3&:

[ a (Add) command ]0x3&

Dodaje pliki do archiwum.

Przykłady

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive1.zip. Nazwy plików w archiwum będą zawierały prefiks subdir.

7z a archive2.zip .\subdir\*

dodaje wszystkie pliki i podfoldery z folderu subdir do archiwum archive2.zip. Nazwy plików w archiwum nie będą zawierały przedrostka subdir.

Nazwy plików w archiwum c:\archive3.zip będą zawierały przedrostek dir2\, ale nie będą zawierały przedrostka c:\dir1.

Więc polecenie, które byś chciał to: 7za.exe a folder1.zip .\folder1\*

Zwróć również uwagę na obsługę symboli wieloznacznych przez 7-Zip. Nie traktuje on *.* jako “wszystkie pliki” – oznacza to “wszystkie pliki z kropką w nazwie pliku”. Pliki bez rozszerzenia zostaną pominięte. Jeśli naprawdę chcesz mieć wszystkie pliki, po prostu użyj * zamiast tego.

Wreszcie, parametr -tzip nie jest potrzebny, jeśli nazwa pliku archiwum kończy się na .zip. 7-Zip jest wystarczająco sprytny, aby dowiedzieć się, który format chcesz w tych przypadkach. Jest on wymagany tylko wtedy, gdy chcesz uzyskać niestandardowe rozszerzenie (np. 7za.exe a -tzip foo.xpi <files> dla dodatku Mozilli).

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

To zadziałało dla mnie

Rozważ strukturę folderów jak C:\Parent\SubFolders….. I chcesz utworzyć parent.zip, który będzie zawierał wszystkie pliki i foldery C:\Parent bez folderu nadrzędnego [tj. zacznie się od SubFolders…..]

cd /D "C:\Parent"

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

To utworzy Parent.zip w C:\Parent

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

Aby rozwinąć zaakceptowaną odpowiedź (nie byłem w stanie dodać komentarza):

Na Linuksie dodanie ‘\’ nie działało dla mnie, więc skończyło się na wymyśleniu bardziej dosłownej linii poleceń, która dała pożądany rezultat:

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

===========

Wyjaśnienie skryptu:

  • save current dir path to use later;
  • navigate to directory which needs to be archived;
  • create archive (notice ‘.’ (dot) in the end);
  • return to the original dir;
  • get rid of the variable which stored original dir path

Mam nadzieję, że może się to komuś przydać.

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

Co powiesz na to. np. Folder/subfolder1, Folder/subfolder2

zaznacz wszystkie podfoldery > kliknij prawym przyciskiem myszy, a następnie utwórz archiwum > wybierz dowolny format

* Nazwa archiwum byłaby nazwą folderu nadrzędnego…

Proste, prawda?