Pakowanie archiwów ZIP do 7z

1

Mam wiele zipplików archiwalnych, które chciałbym ponownie spakować do 7zformatu archiwum, ponieważ pozwoliłoby mi to zaoszczędzić dużo miejsca. Jak ponownie spakować te pliki na komputerze z systemem Windows 7?

Próbowałem to zrobić za pomocą archiwizatora 7-zip w wersji GUI, ale nie znalazłem odpowiedniej funkcji. WinRar ma funkcję „Konwertuj”, ale nie archiwizuje do 7zformatu.

Nie pytam wyłącznie o rozwiązanie obejmujące skryptowanie plików wsadowych.

użytkownik1306322
źródło
Uhmm, napisać plik wsadowy, który używa 7-zip? Co już zmęczyłeś? Gdzie utkniesz?
Ƭᴇcʜιᴇ007

Odpowiedzi:

5

Oto moje własne podejście do problemu:

for %%F in (*.zip) do ( "C:\Program Files\7-Zip\7z.exe" x -y -o"%%F_tmp" "%%F" * & pushd %%F_tmp & "C:\Program Files\7-Zip\7z.exe" a -y -r -t7z ..\"%%~nF".7z * & popd & rmdir /s /q "%%F_tmp" )

Zapisz to w zip to 7z.batpliku, umieść w katalogu ze wszystkimi plikami zip, które chcesz przekonwertować, i kliknij tam dwukrotnie.

Dzięki Clint Priest za kod podstawowy.

użytkownik1306322
źródło
Jak mam to zwiększyć, aby działało zarówno na .rar, jak i .zip?
Ovaryraptor,
Czy można również dodać polecenie, aby usunąć poprzedni plik?
Ovaryraptor,
@Ovaryraptor prostu wymienić (*.zip)się (*.rar)i uruchom tę wersję też. Jeśli chodzi o usuwanie, nie polecam robić tego w tym skrypcie ze względów bezpieczeństwa. Jeśli nie masz kopii zapasowych, możesz stracić pliki, jeśli nie zostaną przekonwertowane, ponieważ ten skrypt nie obsługuje żadnych błędów. Po prostu sprawdź, czy masz taką samą liczbę nowych i starych archiwów, sortując według daty i wybierając nowo utworzone archiwa i porównując liczbę z całkowitą liczbą plików w folderze (minus plik skryptu wsadowego).
user1306322
2

Możesz użyć wiersza poleceń 7zip (szczegółowe przykłady tutaj ), aby najpierw wyodrębnić wszystkie pliki / foldery (za pomocą epolecenia), a następnie ponownie skompresować je do 7z (za pomocą apolecenia).

Jeśli planujesz powtórzyć tę operację, rozważ przechwycenie linii poleceń w pliku .bat / .cmd.

I zawsze testuj w małym katalogu przed wypróbowaniem ogromnej liczby archiwów!

Podróżujący facet techniczny
źródło
1

Oto linia poleceń, która zrobi to za Ciebie, przy założeniu, że pliki zip znajdują się w tym samym katalogu co 7z.exe:

for %F in (*.zip) do ( 7z.exe e -y -o%~nF.tmp %F * & pushd %~nF.tmp & ..\7z.exe a -y -r -t7z ..\%~nF * & popd & rmdir /s /q %~nF.tmp )

Clint Priest
źródło
Wciąż walczę o to, żeby to zadziałało dla mnie.
user1306322
Jaki masz problem? Powyższy fragment zakłada, że ​​twoje pliki .zip znajdują się w katalogu programu 7-zip. Należy uruchomić to polecenie z wiersza polecenia z podwyższonym poziomem uprawnień.
Clint Priest
Alternatywnie umieść zamki błyskawiczne w niechronionym katalogu, zastąp odniesienia do pliku 7z.exe pełną ścieżką do pliku 7z.exe. Następnie ze zwykłego polecenia cmd cd do katalogu z plikami zip i uruchom zmodyfikowany fragment.
Clint Priest
Właśnie to zrobiłem i kompresuje pliki w folderze, z którego uruchamiany jest plik nietoperza (1 testowe archiwum zip i sam plik nietoperza). Po czym mówi 2 razy „nie można znaleźć określonego pliku”.
user1306322
Cóż, próbowałem for %%F in (*.zip) do ( "C:\Program Files\7-Zip\7z.exe" e -y -o%%~nF.tmp %%F * )i to cannot find archivedotyczy wszystkich plików zip w folderze.
user1306322