2012-05-25 12 views
23

Używam plików wykonywalnych wiersza poleceń 7z do zapisywania plików zip, ale widzę, że podczas dodawania do archiwum ścieżka plików jest zachowywana w archiwum.Kompresowanie tylko plików przy użyciu 7z bez zachowania ścieżki

Więc jeśli ja

7z a -tzip myzip.zip dir1\dir2\* 

myzip.zip archiwum będzie zawierać ścieżkę dir1 \ dir2. Nie chcę tego, raczej chcę, aby tylko pliki zostały dodane do pliku zip bez zachowania ścieżek. Szukałem trochę, ale nie wydaje mi się, aby to zrobić, może brakuje mi czegoś oczywistego?

Dzięki

Odpowiedz

19

Podaj pełną ścieżkę. To powinno działać. Nie jest to względna ścieżka od bieżącej lokalizacji. Na przykład podaję poniżej, gdzie chcę, aby pliki w folderze man5 były archiwizowane.

$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/* 

Zamek zawiera tylko pliki, bez katalogów.

Potem podałem tylko względną ścieżkę. Miał katalogi na suwaku.

$ 7z a -tzip myzip.zip Desktop/man4/man5/* 

Próbowałem z systemem Linux (Ubuntu 12.04). Nie wiem, czy różni się to od systemu Windows.

+1

+1 Działa ona w systemie Windows. Miałem dokładnie ten problem i dokładnie to rozwiązanie działało. –

+0

Dziękujemy za potwierdzenie. :) –

+2

Dodanie pełnej ścieżki wymaga (najprawdopodobniej), aby to sprawdzić. Rozwiązanie, które oferuje Nicklay O., jest wygodniejsze. Wymaga tylko dodania kropki przed ścieżką. –

2

Jak wyjaśniono w powiązane pytanie w 7-zip user FAQ, 7z przechowuje ścieżki względne do katalogu roboczego, więc trzeba będzie pierwszym cd do żądanego katalogu najwyższego poziomu dla archiwum i uruchomić 7-zip stąd.

cd dir1\dir2\ 
7z a -tzip myzip.zip * 

Jeśli uruchomić go ze skryptu i nie chcą mieć wpływ na to ze zmianą katalogu, Push katalogu/udogodnienia pop wykorzystanie dostępnej w swojej skorupie wyboru lub uruchomienia CD + 7-zip w zrodził proces, aby uniknąć wpływu cały skrypt ze zmienionym katalogiem. Na przykład przy użyciu startu systemu Windows będzie to:

start /D dir1\dir2\ /wait 7z a -tzip myzip.zip * 
+0

Uruchomiłem to w skrypcie i nie chcę zmieniać katalogu. Czy nie ma innego sposobu robienia tego samego? – Raam

+0

Będziesz musiał, ponieważ tak działa 7z.Użyj opcji push/pop w katalogu dostępnych w wybranej powłoce lub uruchom cd + 7-zip w zarodkowanym procesie, aby uniknąć wpływu na cały skrypt ze zmienionym katalogiem. –

+0

dziękuję za kreatywne rozwiązanie, ale jak Kathiravelu wskazuje, podając pełną ścieżkę, robi to. – Raam

8

odkryłem sposób to zrobić za pomocą ścieżki względnej:

7z a -tzip myzip.zip %CD%\dir1\dir2\* 

% CD% sposób można uzyskać bieżącą ścieżkę w pliku wsadowym systemu Windows, ale również działa z wiersza poleceń. Więcej informacji o Capturing the current directory from a batch file.

53

Wystarczy dodać kropkę przed ścieżką, czyli 7z a -tzip -r myzip.zip .\Relative\Dir\*

+4

. \ Działa idealnie! –

+0

W ubuntu to jest ./, dzięki –

+0

Tak, na * nixes slash powinien być taki. –

1

ten pracował dla mnie

Rozważmy strukturę folderów jak C: \ \ Parent podfoldery ..... i chcesz stworzyć parent.zip który będzie zawierał wszystkie pliki i foldery C: \ dominującą bez folderu nadrzędnego [tj rozpocznie z podfolderów .....]

cd /D "C:\Parent" 

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

to stworzy Parent.zip w katalogu C: \ rodzic

Powiązane problemy