Насколько я могу судить, у 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
в каждой из двух строк. Конечно, применяется стандартный отказ от ответственности.