Как извлечь все 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
  • Добавить в 7-Zip-архив: как исключить определенные типы файлов / расширения?
  • Что случилось с опцией .gzip в 7-zip?
  • Как создать многопользовательский файл 7zip в Linux?
  • Как создать резервную копию Windows 7 и вернуть обновление до Windows 8
  • Как вы воссоздаете среду восстановления системы в Windows 7?
  • Может ли диск восстановления одного ноутбука использоваться на другом ноутбуке?
  • Перемещенный внутренний жесткий диск на внешний жесткий диск USB 3.0. Теперь я не могу загружать окна
  • Могу ли я восстановить системный раздел Windows, который я удалил (100 МБ)?
  • Обновление Windows происходит после установки IE11
  • 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 на каждой из двух строк. Разумеется, стандартный отказ от ответственности.

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