Как извлечь все ZIP-файлы в подпапках с помощью 7-Zip в Windows 7

У меня большая структура дерева папок Windows 7, содержащая много файлов ZIP . Это однослойные ZIP-файлы (а не ZIP в ZIP). Какую 7-Zip-команду я могу использовать для анализа этой структуры папок, найти каждый файл ZIP с расширением файла (см. Пример), извлечь его (удалив ZIP-файл, оставив извлеченные файлы) в том же месте?

Пример. Все файлы в иерархии папок называются примерно так: abc.mp3.zip или xyz.jpg.zip – расширение собственного файла, за которым следует «.zip». Я хочу, чтобы 7-Zip находил все файлы в дереве с расширением файла с помощью подстановочных знаков (* .mp3.zip, * .jpg.zip и т. Д.) И извлекал их в текущее местоположение без создания новых папок, чтобы результат был abc. Mp3 и xyz.jpg.

  • Что означает знак процента (% и %%) в аргументе командного файла?
  • Почему файл размером 7zip больше, чем необработанный?
  • Как сжать файл изображения JPG
  • Зашифрованные контейнеры сжатия, такие как ZIP и 7-Zip, сжимают или шифруют в первую очередь?
  • Как открыть zip-папку, показанную как zip.xml-файл?
  • Извлечение рекурсивно с использованием 7-Zip
  • Есть ли способ «отключить» подключенный сетевой диск, но НЕ удалять сопоставление?
  • Обновления Windows и поиск драйверов потребляют огромное количество оперативной памяти.
  • Схема раздела и размер для двойной загрузки Windows 7 и Ubuntu 9.10 с отдельными разделами для данных и / home
  • Автоматическое запуск программы (и запуск под другой учетной записью) при входе в систему
  • Как получить дополнительную информацию о высокопроизводительном процессе rundll32.exe?
  • Как запустить скрипт powershell как администратора
  • One Solution collect form web for “Как извлечь все ZIP-файлы в подпапках с помощью 7-Zip в Windows 7”

    Насколько я могу судить, 7-zip не имеет команды, которая делает то, что вы ищете. Вот сценарий командного файла Windows, который, я думаю, будет делать то, что вы хотите. Его следует запустить из командной строки, чтобы вы могли указать путь к корню дерева папок, которое должно быть обработано.

    Файл unzipper.bat

     @echo off setlocal if "%1"=="" goto Usage call :Get7zCmd :: Recurse folder passed in as paramater for /r %1 %%Z in (*.zip) do ( echo ==== rem Change to the directory of zip file cd /d "%%~dpZ" rem Extract all files to current directory echo %_7zCmd% e "%%~nxZ" -y rem Delete the zip file echo del "%%~nxZ" ) goto End :Usage echo. echo Parses through folder structure starting at the specified path, finding echo and extracting the contents of all zip files found, and then deletes echo the zip file. echo. echo Usage: echo %~n0 root-directory-path echo. echo For example: echo. echo %~n0 "D:\some folder" :End goto :EOF :: ========================== :: Subroutine Get7zCmd :: Determines the full path to 7-zip command-line executable from the Windows :: Registry and sets the variable "_7zCmd" to the result. :Get7zCmd set Reg.Key=HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe set Reg.Val=Path for /F "Tokens=2*" %%A in ('Reg Query "%Reg.Key%" /v "%Reg.Val%" ^| find /I "%Reg.Val%"') do call set PathDirectory=%%B set _7zCmd="%PathDirectory%%\7z.exe" exit /b 0 

    Поскольку в целом то, что делает скрипт, является довольно радикальным и потенциально разрушительным, потому что после этого он может извлечь большое количество файлов и удалить много файлов zip, я отключил команды на строках 12 и 14, которые будут делать эти вещи, префикс их с помощью echo , Это заставляет их просто распечатывать то, что они сделали бы, если бы echo не было. Таким образом, вы можете сначала протестировать сценарий, не нанося ущерба вашей файловой системе, если возникнет какая-то неожиданная проблема.

    Чтобы изменить сценарий, фактически выполните эти действия, вам нужно удалить echo на каждой из двух строк. Разумеется, стандартный отказ от ответственности.

    Давайте будем гением компьютера.