|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Распаковка архивов в поддиректории с теми же именами |
|
|
CMD/BAT - [решено] Распаковка архивов в поддиректории с теми же именами
|
Пользователь Сообщения: 59 |
Здравствуйте.
Нужен батник, который в директории, где он лежит, ищет архивы, и распаковывает их там же в подпапки с именами архивов (распаковать в "/"), с перезаписью, если такие папки и файлы уже есть. Лучше с помощью консольной 7za.exe. Архивы могут иметь разные расширения. Но если будет код для zip-архивов, то можно будет дополнить батник аналогичным кодом для архивов с другими расширениями. |
|
Отправлено: 08:10, 09-06-2018 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата NuclearBox:
|
|
------- Отправлено: 10:09, 09-06-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать mwz, верный первый вариант - в той же папке, где лежит батник.
Если батник лежит в каталоге "FOLDER", то он должен найти в "FOLDER" все файлы архивов .zip (например). Допустим, в "FOLDER" кроме прочих файлов и папок находится два архива - f1.zip и f2.zip Батник должен их распаковать соответственно в папки "FOLDER/f1/" и "FOLDER/f2/", с перезаписью, если такие файлы и папки уже есть. |
Отправлено: 10:21, 09-06-2018 | #3 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата NuclearBox:
"FOLDER\f1\" и "FOLDER\f2\" |
|
------- Отправлено: 11:07, 09-06-2018 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
|
------- Последний раз редактировалось megaloman, 09-06-2018 в 12:15. Отправлено: 12:07, 09-06-2018 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:40, 09-06-2018 | #6 |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать megaloman, alpap, большое спасибо! Снова выручаете.
С конструкцией кода разобрался, подправил с учетом нюансов. Предустановленный архиватор Winzip или 7-Zip использовать не предполагается. Вторым файлом с батником в рабочую папку отправится консольный архиватор 7za.exe. Путь к рабочей папке прописывать не хочется, он может/будет меняться. Внес мелкие изменения, убрал пути и получил два варианта: Вариант alpap: @echo off set "d=%~dp0" set "ar=7za.exe" set "exp=zip" pushd "%d%" for /f "delims=" %%a in ('dir /a-d/b "*.%exp%"') do %ar% x "%%a" -o"%%~na" -y popd Поэтому чуть удобнее конструкция megaloman, где можно сразу перечислить все нужные архивы по маске: @Echo Off Set Mask="*.7z" "*.rar" "*.zip" Set "ARC="7za.exe" x" FOR %%f IN (%Mask%) DO ( Md "%%~nf" 2>nul %ARC% "%%f" -o"%%~nf\" -y ) Спасибо, уважаемые, за помощь и науку! |
Отправлено: 16:21, 09-06-2018 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать NuclearBox,
если запуск из папки с архивами и в path прописан путь к 7z, то достаточно: распакует все архивы что сможет (а может ой как немало), на не архивы (например тот же bat в этой папке) ругнется в окне и проигнорирует (но не остановится и не вылетит) |
Отправлено: 01:26, 10-06-2018 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
![]() |
|
Отправлено: 01:36, 10-06-2018 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Iska,
это да, по любому, предполагал наличие только разнообразных распространенных архивов да может пару файлов txt, но конечно лучше все же, если нет уверенности в содержимом директории прописать возможные расширения и это тоже легко сделать сделать добавив их под dir вообще, если увеличить несколько масштабы кода, можно сделать вариант для перебора всех возможных расширений установленной по штатному пути 7z (надеюсь путь к dll и файлу string.txt действительно не отличается в зависимости от версий - не проверял) @echo off set "d=C:\Folder" set "ar=%ProgramFiles%\7-Zip\7z.exe" call :r pushd "%d%" for /f "delims=" %%a in ('dir /a-d/b %exp%') do "%ar%" x "%%a" -o"%%~na" -y popd pause& exit :r "%ar%" x "%Programfiles%\7-Zip\7z.dll" -o$ "string.txt" -r for /f "delims=" %%f in ('dir /a-d/b/s "$\string.txt"') do ( <"%%f" (for /f "delims=" %%a in ('find /n /v ""') do @>nul chcp 866& set "x=%%a"& cmd /v/c set "x=!x:*]^^=!") ) for %%x in (%x%) do echo %%x|>nul find ":" && for /f "delims=:" %%a in ("%%x") do >>+<+ set /p exp=""*.%%a" " >nul 2>&1 del /q +& >nul 2>&1 rd /s /q $ exit /b |
Последний раз редактировалось alpap, 10-06-2018 в 04:09. Отправлено: 01:50, 10-06-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Распаковка ВСЕХ архивов в папку с тем же именем | death7lord | Скриптовые языки администрирования Windows | 9 | 11-01-2020 15:21 | |
CMD/BAT - [решено] Поиск и распаковка архивов по маске | kirillius | Скриптовые языки администрирования Windows | 9 | 04-02-2015 08:37 | |
CMD/BAT - [решено] распаковка архивов по нужным папкам | muguch | Скриптовые языки администрирования Windows | 28 | 14-09-2012 11:13 | |
Разное - РАСПАКОВКА АРХИВОВ MZ (ОПК 3.19) | Vamp1re | Тест-форум | 0 | 13-12-2010 15:03 | |
распаковка больших архивов | greeka | Общий по FreeBSD | 7 | 19-07-2004 09:21 |
|