Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Распаковка нескольких архивов в текущую папку (http://forum.oszone.net/showthread.php?t=335939)

Skylear 30-07-2018 18:34 2824049

Распаковка нескольких архивов в текущую папку
 
всем привет.
есть:
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

Skylear 30-07-2018 20:08 2824063

в общем вот наколдовал, может кому надо.
Распаковывает все лежащие архивы из текущей папки (и подпапками) в собственный корень, с заменой файлов, если таковые были уже распакованы, а затем удаляет сами архивы (путь нужно указать). В итоге имеем структуру из папок и файлов без архивов.

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

evgkoms 12-06-2023 00:52 3010435

Архиватор ExtractNow делает это сам через настройки


Время: 22:01.

Время: 22:01.
© OSzone.net 2001-