Wyodrębnij plik ZIP, a następnie wszystkie pliki sub-zip

1

Korzystam z systemu Windows 10, ale będę go również potrzebować do pracy z systemem Windows 7.
Mam, file.zipktóry zawiera xpliki zip, z których każdy zawiera również xpliki zip. Jak mogę wyodrębnić wszystkie te „nie ręcznie”? IE z plikiem Bacha lub skryptem Pythona?

Hugh
źródło
Wydaje się być blisko superuser.com/q/421915/328618 . Niestety nie wspominasz, czy rozpakowana zawartość może kolidować z plikami już obecnymi, czy nie (rozpakowane pliki mogą wymagać dodatkowego katalogu do ich przechowywania) i co powinno się stać z rozpakowanymi plikami zip.
mvw

Odpowiedzi:

1

Poniżej znajduje się metoda, której użyłem w przeszłości do tego samego rodzaju zadania, które opisujesz, które pobrałem z jednego z moich „ worków skryptów ”. Do tego zadania użyłem bezpłatnej aplikacji 7-Zip ze 100% sukcesem.

Zasadniczo to. . .

  • Używa aplikacji 7-Zip (7za) do wyodrębnienia zawartości pliku (ów) zip z jednej lokalizacji do drugiej
  • Następnie wykonuje xcopy wyodrębnionych plików ZIP w początkowych wyodrębnionych plikach i kopiuje je do katalogu roboczego
  • Następnie usuwa pliki ZIP ze źródła i wyodrębnia inne pliki zip z katalogu roboczego i zapętla się do końca

Uwaga: Plik wykonywalny 7za może wymagać skopiowania do /system32folderu lub ustawienia ścieżki, w której znajduje się PATHzmienna środowiskowa.


Skrypt partii

Będziesz musiał odpowiednio ustawić wartości zmiennej źródłowej, docelowej i katalogu roboczego dla swojego środowiska i potrzeb, a reszta powinna działać zgodnie z oczekiwaniami.

@ECHO ON

SET sourcedir=C:\Test\Source
SET destdir=C:\Test\Dest
SET workdir=C:\Test\WorkTemp

:unzip
7za -Y e "%sourcedir%" -o"%destdir%" -r
DEL /Q /F "%workdir%\*zip
XCOPY /Y /F %destdir%\*.zip "%workdir%"
DEL /Q /F %destdir%\*.zip

DIR "%workdir%\*.zip" /A-D                         
IF ERRORLEVEL 1 GOTO :done

:unzip2
7za -Y e "%workdir%" -o"%destdir%" -r
DEL /Q /F "%workdir%\*.zip"
XCOPY /Y /F %destdir%\*.zip "%workdir%"
DEL /Q /F %destdir%\*.zip

DIR "%workdir%\*.zip" /A-D                         
IF ERRORLEVEL 1 GOTO :done
GOTO :unzip2

:done
GOTO :EOF

Dalsze zasoby

Pimp Juice IT
źródło