![]() |
Распаковка нескольких архивов в текущую папку
всем привет.
есть: 1) установленный 7-zip 2) папка с подкаталогами и файлами, где то в подпапках лежат архивы (содержат только однотипные файлы типа *.tif) задача: 1) через скрипт распаковать архивы (лежащие где-то там в каталогах) БЕЗ создания отдельной папки с названием архива (аналог "извлечь в текущую папку") 2) доработать скрипт, чтобы распакованный файл из архива подменял тот что уже был распакован (это необходимо, так как есть каталоги, где лежат архивы, а есть где архивы и распакованные из него файлы) 3) после того, как имеем каталоги, с распакованными файлами и их архивами - удалить все архивы. вот этот скрипт распаковывает архивы с сохранением пути, НО создает новую папку @echo off for %%a in (zip, rar, 7z) do ( for /f "delims=" %%b In ('dir /b /s /a-d "H:\SHARE2\test\*.%%a" 2^>nul') do ( "C:\Program Files\7-Zip\7z.exe" x -t* "%%~b" -o"%%~dpnb" -y ) ) pause |
в общем вот наколдовал, может кому надо.
Распаковывает все лежащие архивы из текущей папки (и подпапками) в собственный корень, с заменой файлов, если таковые были уже распакованы, а затем удаляет сами архивы (путь нужно указать). В итоге имеем структуру из папок и файлов без архивов. FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F FOR %%X in (*.rar, *.zip, *.7z) DO ( "C:\Program Files\7-zip\7z.exe" x "%%X" -y ) popd ) del /s "H:\SHARE2\test\zakaz\*.zip" del /s "H:\SHARE2\test\zakaz\*.rar" del /s "H:\SHARE2\test\zakaz\*.7z" pause собственно скрипт полезен, когда операторы или дизайнеры (ну работники) сами распаковывают архив с файлом, а потом забывают удалить или архив или сам файл. скрипт подчищает все это. P.S: команды на удаление, где пути прописаны кириллицей - пересохранить в кодировке 866 |
Архиватор ExtractNow делает это сам через настройки
|
Время: 22:01. |
Время: 22:01.
© OSzone.net 2001-