Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Ответить
Настройки темы
CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Ветеран


Сообщения: 900
Благодарности: 86

Профиль | Отправить PM | Цитировать


Изменения
Автор: SharkyEXE
Дата: 13-07-2013
Здравствуйте.
Пожалуйста, если это возможно, напишите мне, как при помощи *.bat или *.cmd файла из архива UpdatePack-XPSP3-Rus-13.6.15.7z (Наборы - UpdatePack-XPSP3-Rus версия 13.6.15) в папку C:\1 извлечь только папку Addons с сохранением структуры папки Addons
То есть на выходе получаем папку C:\1, в которой находиться только папка Addons с сохранением структуры папки Addons. Больше ничего, кроме папки Addons в папке C:\1 не должно быть.
Спасибо.

Отправлено: 16:58, 13-07-2013

 

Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: txt Ссылка.txt
(701 байт, 43 просмотров)

Вот ссылка.

Отправлено: 22:14, 02-02-2014 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Radif Suharik:
И еще вопросик,может не по теме »
Причём дважды:
  • один вопрос — одна тема;
  • пишите в личку автору, а не здесь.

Отправлено: 22:58, 02-02-2014 | #22


Аватара для mariolast

Ветеран


Сообщения: 717
Благодарности: 80

Профиль | Отправить PM | Цитировать


Тоже интересен подобный вопрос. Нужно средствами самораспаковывающегося 7Z SFX Извлечь содержимое двух папок в одну общую. Например в архиве есть две папки "Common" и "x86", нужно слить содержимое их в одну не нарушая внутреннеей структуры. Как ни страннно, средствами коммандной строки оптимального решения не нашел. Есть только возможность распаковать все и скопирповать, а это очень затратно по времени, если содержимое папок большое по объёму.

Отправлено: 07:56, 08-08-2017 | #23


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


mariolast, подготовьте пример такого архива небольшого объёма.
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:16, 08-08-2017 | #24


Аватара для mariolast

Ветеран


Сообщения: 717
Благодарности: 80

Профиль | Отправить PM | Цитировать


Вот небольшой архив. В реале полгига каждая папка
Нужно все из папки Common переместить в папку x64
https://mega.nz/#!FmA1BbQb!hjiR-DwhA...yvZKNV-AFP3dbQ

Отправлено: 20:37, 08-08-2017 | #25


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Если нужно все из папки Common переместить в папку x64, то:
Код: Выделить весь код
@Echo Off

Set "ArcFile=Z:\Box_Arc\Archive.7z"
Set "Arc=C:\Program Files\7-Zip\7zG.exe"
Set "ArcKey=x -r"

Set "BoxOut=Z:\Box_Out"

rem              1        2           3          4        5      6       7
Call :FromArc "%Arc%" "%ArcKey%" "%ArcFile%" "%BoxOut%" "x64" "Common" "x64"

GoTo :Eof

:FromArc
	Md "%~4\%~nx0.tmp" >nul 2>&1
	Pushd "%~4\%~nx0.tmp"
	:Begin
		%1 %~2 %3 "%~6\"
		Call :DirMove "%~4\%~nx0.tmp\%~6" "%~4\%~5"   
		Shift /6
	If Not "%6"=="" GoTo :Begin
	Popd 	
	RD "%~4\%~nx0.tmp" >nul 2>&1
GoTo :Eof

:DirMove 
	xcopy /T /E /I /Y %1 %2

	FOR /F "usebackq delims=" %%i IN (`xcopy /E /Y /I /L /F "%~1\*.*" %2`) DO Call :AllMove "%%i"
	For /F "usebackq delims=" %%i In (`Dir "%~1\*.*" /B /S /A:D 2^>nul^|Sort /R`) Do RD "%%i" 2>nul
	RD %1 2>nul
GoTo :Eof

:AllMove
	Set Twin=%1
	Set Twin=%Twin: -> =" "%
	Move /Y %Twin% >nul 2>&1
GoTo :Eof
Вызывается процедура :FromArc
1. Архиватор "%Arc%"
2. С ключами "%ArcKey%"
3. Обработает архивный файл "%ArcFile%"
4. Результат получим в папке "%BoxOut%"
5. Разархивированные указанные папки будут слиты в одной подпапке этой папки (здесь пример "x64")
6, 7... Из архива разархивируем только указанные папки, (здесь пример "Common" "x64", можно продолжить при желании перечисление папок)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 09-08-2017 в 01:01.


Отправлено: 00:33, 09-08-2017 | #26


Аватара для mariolast

Ветеран


Сообщения: 717
Благодарности: 80

Профиль | Отправить PM | Цитировать


Ну...тут тоже двойная работа получается, делаю как раз для 7Z sfx, извлекать из него, потом еще раз разархивировать. Придется наверное таки через move делать

Отправлено: 13:35, 09-08-2017 | #27


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


mariolast, напрямую ни через сам sfx, ни через 7z.exe, ни даже через standalone 7za.exe не выйдет — банально отсутствует необходимый функционал.

Отправлено: 14:57, 09-08-2017 | #28


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата Iska:
mariolast, подготовьте пример такого архива небольшого объёма. »
А Вы что выдали?
Цитата mariolast:
Извлечь содержимое двух папок в одну общую. »
Это и сделано. И именно посредством move. Вы что, внутри архива хотите слить две папки? Имхо, не выйдет.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 09-08-2017 в 17:06.


Отправлено: 16:24, 09-08-2017 | #29


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Вы что, внутри архива хотите слить две папки? »
Насколько я понял — нет. Было желание извлечь содержимое одной папки «X» из архива в указанный каталог «Z» (включая саму папку), извлечь содержимое другой папки «Y» из архива в тот же самый каталог «Z» вовнутрь ранее извлечённой папки «X» (не включая саму папку «Y», а только её содержимое), заменяя ранее извлечённое, и всё это — средствами самого sfx.

Отправлено: 17:24, 09-08-2017 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Извлечь из архива только определенную папку/определенный файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Перемещение файлов в только, что созданную папку из контекстного меню. OSArev Скриптовые языки администрирования Windows 15 09-06-2024 00:02
CMD/BAT - нужно извлечь из архива определенные файлы за текущую дату alek2012 Скриптовые языки администрирования Windows 0 20-06-2012 15:24
Доступ - Виснет ПК при заходе в определенную папку no_ok@vk Microsoft Windows 7 1 23-04-2012 12:22
Разное - Как извлечь фотографии из Архива поврежденного бекапа? illusionmgs Хочу все знать 6 24-01-2012 03:02
[решено] Настройка получения писем в определенную папку okshef Хочу все знать 7 12-03-2011 20:27




 
Переход