Mam kilka takich plików:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Chcę tylko wiedzieć, jak zachować strukturę folderów podczas archiwizacji. Jest to ważniejsze niż zduplikowanie, aby wiedzieć, jak to rozwiązać, byłby bonus.
@Lamb „Czy chcesz archiwizować tylko wybrane pliki (a nie całą zawartość folderu) z folderów G1 i G2?”
To prawie wszystko mówi, ale postaram się poprawić: nie tylko chcę przenieść tylko niektóre wybrane pliki do archiwum. Mam również listę tych plików, w tym nazwy ścieżek do każdego pliku.
Tak więc w SubDir1 może być 10 plików, z których chcę spakować trzy, a w SubDir1 \ sub2 może być pięć plików, z których chcę spakować wszystkie pięć. Pliki, które muszę zarchiwizować, znajdują się w pliku list.
Mogą istnieć zduplikowane pliki, więc mam nadzieję, że z dodanymi podkatalogami, 7-Zip NIE widzi ich jako duplikatów.
I lubię to robić w wierszu poleceń.
Próbowałem pliku wsadowego takiego:
7z a -r MyArchive.7z C:\G\G1\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G2\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G1\09saguri.mp3
7z a -r MyArchive.7z C:\G\G2\09saguri.mp3
Oznacza to również, że pliki 01antique-shop.mp3, 02antique-shop.mp3, ...., do 33antique-shop.mp3 i 34antique-shop.mp3, NIE powinny być archiwizowane.
Nazwy folderów (= podkatalogi) nie zostały dodane do MyArchive.7z i to jest problem.
Oczywiście chciałbym użyć tylko jednego komanda z plikiem listy, ale to też nie działa.
Próbowałem:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
co faktycznie działa całkiem dobrze, jeśli chodzi o wybieranie, ale NIE zachowuje struktury katalogów. Niestety
Jak mam to zrobic?
źródło
Odpowiedzi:
Najnowsza stabilna wersja 7-Zip (15.14) ma przełącznik -spf, który umożliwia przechowywanie absolutnej ścieżki.
Na przykład, jeśli plik list.txt to
polecenie
7z a p.7z -spf @list.txt
utworzy archiwum przechowujące ścieżki bezwzględne takie, jak na liście. Alternatywnie polecenie7z a p.7z -spf2 @list.txt
usunie literę dysku:Jeśli plik list.txt to
polecenie
7z a p.7z @list.txt
zapisze ścieżki względne takie, jakie są na liście, w obu wersjach 9.20 i 15.14.Zrobiłem więcej testów z przełącznikiem -spf. Wyniki są tutaj .
źródło
Mam go do zarchiwizowania katalogu z podkatalogami przy użyciu :
źródło
Spróbuj zamiast tego:
Problem wydaje się być to, że ludzie zostali prośbą do lat dla odpowiednich opcji przechowywania ścieżka (tak samo jak oni mają na możliwość modyfikowania archiwa wieloczęściowe ), ale autor nie wydaje się być zainteresowany. To jeden z powodów, dla których tak często zacząłem używać WinRAR.
Jeśli masz plik list, 7-Zip nie będzie przechowywać ścieżek, jeśli pliki przeznaczone do archiwizacji nie współużytkują jednego katalogu najwyższego poziomu. Na przykład jeśli masz plik Input.txt zawierający następujące elementy:
Jeśli uruchomisz
7z a MyArchive.7z @Input.txt
, zobaczysz, że ścieżki zostały całkowicie rozebrane, co wydaje mi się całkowicie odwrócone (OTOH dobrzerar a MyArchive.rar @Input.txt
sobie z tym radzi).Aby przezwyciężyć niedobór 7-Zip, możesz użyć pliku wsadowego w następujący sposób:
Uwaga: Zastąp
D:\MyArchive.7z
właściwą ścieżkę do docelowego archiwum. Ponadto plik wsadowy powinien działać niezależnie od tego, czy zacytowałeś ścieżki w pliku listy, czy nie.Edycja: Jeśli Twój plik listy wygląda następująco:
lub
następnie edytuj go, aby wyglądał następująco:
Teraz zakładając, że wszystkie pliki do zarchiwizowania są poniżej
C:\$$-edrive
, przejdź do C: \ i uruchom7z a C:\MyArchive.7z @C:\Input.txt
. Korzystając z pliku listy, ścieżki zostaną zapisane tylko wtedy, gdy nie ma liter dysku, nie ma początkowych ukośników odwrotnych i jeśli katalog najwyższego poziomu (root) jest taki sam dla wszystkich plików. Ponadto, aby uzyskać najlepsze wyniki, odradzam tworzenie MyArchive.7z w C: \ $$ - edrive.źródło
7-Zip zobaczy je niezależnie od siebie jako duplikaty i pominie je. Jeśli jest jakiś sposób na obejście tego, nigdy go nie znalazłem - zawsze po prostu dzielę pracę na kilka archiwów.
źródło
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\temp
gdzieZDIR
jest ścieżka do 7-Zip iZIP
jest dyskiem docelowym.Nie wiesz, jak pomóc z duplikatami. Myślę jednak, że wygodniejszym systemem niż partia z pełną komendą dla każdego byłoby utworzenie pliku listfile.txt:
A następnie skompresuj je wszystkie za pomocą
7z a -r -tzip archive.zip @listfile.txt
źródło
Stworzyłem skrypt nietoperza do użycia z totalcmd „tot-zip.bat”:
Następnie w sumie cmd utwórz dla niego skrót:
Następnie, jeśli chcesz skompresować niektóre pliki / foldery i zachować strukturę folderów względem
%TOP_DIR%
siebie, po prostu wybierz potrzebne pliki (gdzieś w środku%TOP_DIR%
) i naciśnij przycisk.źródło