Сценарий:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
)
Объяснение:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
Это выполняет цикл для каждого файла, возвращаемого командой dir /b /s *.zip *.rar
. /s
Говорит dir
в рекурсию подкаталогов и /b
гравюры в голом формате.
Имя файла сохраняется в %%I
переменной для последующего использования. Если вы набрали это в приглашении, вы бы использовали %I
вместо этого.
"C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I"
Это выполняет извлечение. Аргумент -o"%%~dpI"
извлекает файл в тот же каталог, где находится архив. Другие опции:
-o"%%~dpI"
- Извлекает в каталог, где находится архив.
-o"%%~dpnI"
- Создает новый каталог в иерархии, названной в честь архива, и извлекает его (то есть AFolder\archive.zip
извлекает в AFolder\archive\
).
-o"%%~nI"
- Создает новый каталог в текущем каталоге с именем архива и извлекает его (то есть AFolder\archive.zip
извлекает в .\archive\
).
Опустить -o
аргумент - Извлекает в текущий каталог.
Пример:
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│
├───BFolder
│ b.zip
│
└───CFolder
c.zip
C:\Temp>batch.bat > nul
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│ a.zip.txt
│
├───BFolder
│ b.zip
│ b.zip.txt
│
└───CFolder
c.zip
c.zip.txt
Стивен Дженнингс
источник
Я считаю , что вы ищете в
forfiles
команде :forfiles /s /m *.zip /c "7z x @file"
forfiles /s /m *.rar /c "7z x @file"
источник
Я просто использую sweep.exe лет назад. Он запускает ту же команду в текущем каталоге и во всех подкаталогах.
Вам может понадобиться запустить Sweep более одного раза, если вы хотите извлечь архивы из архива.
Вы можете использовать что-то вроде:
sweep 7za x -y *.zip
чтобы открыть все .zip файлы в текущей папке и все папки внизу.
Версия командной строки 7zip находится здесь: http://www.7-zip.org/download.html
источник
Это обновление принятого ответа для поддержки имен файлов с пробелами ("DELIMS =") и пропуском перезаписи (-aos). Смотрите ссылки ниже и обновленный код. Спасибо
Извлеките все Zip в каталог (включая подпапки) с помощью файла .bat или команды dos https://stackoverflow.com/questions/12487491/how-to-handle-space-of-filename-in-batch-for-loop http://7zip.bugaco.com/7zip/MANUAL/switches/overwrite.htm
источник
извлекает все RAR-файлы из подпапок текущего каталога (рекурсивно) в текущую папку. Измените на -air! *. Zip для zip-файлов.
источник
Скопируйте его в текстовый файл, переименуйте в
extract.bat
и поместите в родительскую папку, содержащую другие папки с архивами. Поместите его7z.exe
в ту же папку, что иextract.bat
файл, или измените путь в приведенной выше команде, чтобы отразить установленное местоположение вашего7z.exe
. Это извлекает все RAR в каждой подпапке в ту же подпапку, что и RAR. Это не делает никакой "уборки дома" (как моя подруга) ...Отрегулируйте в
*.rar
соответствии с вашими потребностями.источник