5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
1

Разархивирование файлов по маске из архивов ARJ, RAR, ZIP с удалением из архива

06.03.2013, 01:56. Показов 21884. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Необходимо разархивировать файлы с определенной маской из архива в текущий каталог без создания каталога. Если в этом архиве есть еще архивы, либо каталоги с архивами, то их тоже необходимо разархивировать. У меня получается разархивировать только сам архив. Подскажите как это сделать?

Мой вариант

Bash
1
C:\Rar.exe e -or  c:\folder1\*.* *.txt c:\folder1
ключ or использую для того чтобы одноименные файлы не затирались
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2013, 01:56
Ответы с готовыми решениями:

Извлечение файлов из архивов Rar, Zip, Arj
Всем привет! Вот столкнулся с задачей... нужно извлекать файлы из архивов. Все усложняется тем...

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Архивирование/разархивирование RAR и ZIP архивов.
Подскажите, как можно из своей програмы на VB архивировать/разархивировать (rar, zip) файлы?

Разархивирование rar архива
Подскажите как разархивировать rar архив с ключами, я пытаюсь сделать так procedure...

20
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
15.03.2013, 22:37  [ТС] 2
Dragokas, видимо опять кроме вас мне с этим никто не поможет Выручайте!!! Сейчас ситуация изменилась, на данный момент необходимо разархивировать файлы из всех архивов в каталоге по определенной маске(ам) и удалить из архива разархивированные файлы. Т.к. батник будет запускаться несколько раз в день необходимо именно удалять разархивированные файлы из архива. Все получается сделать одной строкой, а удалить не получается.

Bash
1
C:\Rar.exe x -or  c:\folder1\*.* *.txt c:\folder1
0
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
15.03.2013, 22:45 3
Цитата Сообщение от run82 Посмотреть сообщение
необходимо разархивировать файлы из всех архивов в каталоге по определенной маске(ам) и удалить из архива разархивированные файлы.
удалить из архива файлы по определённой маске?
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
15.03.2013, 22:48  [ТС] 4
Да, по определенной!!
0
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
15.03.2013, 22:57 5
Bash
1
"c:\Program Files\WinRAR\Rar.exe" d 5.rar *.txt
удалить из архива 5.rar все файлы *.txt
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
15.03.2013, 23:09  [ТС] 6
Но это уже работает следующая строка в батнике. Т.к. архивов может быть много, и в момент выполнения данной строки может поступить новый архив из которого мы удалим все файлы по маске не успев разархивировать их. Это риск потери файлов. Т.е необходимо удалить файлы в текущем архиве.
0
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
15.03.2013, 23:49 7
run82, попробуйте через цикл
Bash
1
2
3
4
5
6
@echo off
set rar=c:\Program Files\WinRAR\Rar.exe
for /f "delims=" %%a in ('dir /b/s "c:\2\*.rar"') do (
"%rar%" e -or "%%a" *.txt "Tem\"
"%rar%" d "%%a" *.txt
)
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
16.03.2013, 01:05  [ТС] 8
sov44, отличная идея Спасибо! все работает немного расширил ваш цикл

Bash
1
2
3
4
5
6
@echo off
set rar=c:\Rar.exe                                            \\изменил путь к архиватору
for /f "delims=" %%a in ('dir /b/s "c:\2\*.*"') do (   \\убрал привязку к архивам с расширением .rar
"%rar%" e -or "%%a" *.txt *.doc "c:\2"                \\добавил возможность разархивации по нескольким маскам. Изменил каталог для разархивируемых файлов. Здесь у вас прописан тип архива .rar, как убрать привязку только к .rar архивам? 
"%rar%" d "%%a" *.txt *.doc                              \\добавил возможность удаления по нескольким маскам. Здесь вопрос тот же, как убрать привязку к .rar архивам?
)
0
Эксперт WindowsАвтор FAQ
18041 / 7644 / 891
Регистрация: 25.12.2011
Сообщений: 11,426
Записей в блоге: 17
16.03.2013, 20:46 9
Тип архива был указан в строке 3 (Вы успешно указали перечислять все типы файлов *.*)
В строках 4,5 rar - это не тип, а просто название переменной (путь к rar.exe)

Вы хотите задавать несколько типов архивов?
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
17.03.2013, 01:03  [ТС] 10
Понял! Спасибо!
Да, есть необходимость чтобы данный батник разархивировал не только rar архивы, а еще zip и arj например.
0
Эксперт WindowsАвтор FAQ
18041 / 7644 / 891
Регистрация: 25.12.2011
Сообщений: 11,426
Записей в блоге: 17
17.03.2013, 02:32 11
Тогда так:
Bash
1
for /f "delims=" %%a in ('dir /b/s "c:\2\*.arj", "c:\2\*.zip"') do (
или так:

Bash
1
2
3
4
5
6
7
8
9
@echo off
set rar=c:\Rar.exe
Set ext=*.arj *.zip
Set Folder=c:\2
Call Set St="%Folder%%%ext: =","%Folder%%%"
for /f "delims=" %%a in ('dir /b/s %St%') do (
  "%rar%" e -or "%%a" *.txt *.doc "%Folder%\"
  "%rar%" d "%%a" *.txt *.doc
)
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
17.03.2013, 23:16  [ТС] 12
Dragokas, разобрался почему не работает ваш вариант и этот вариант
Bash
1
2
3
4
5
@echo off
set rar=c:\Rar.exe                                            
for /f "delims=" %%a in ('dir /b/s "c:\2\*.*"') do (   
"%rar%" e -or "%%a" *.txt *.doc "c:\2"               
"%rar%" d "%%a" *.txt *.doc
Rar.exe это консольная версия WinRar.exe и при разархивировании zip и т.д. архивов появляется ошибка о том что архив не rar формата. Все предложенные варианты на самом деле рабочие, но со стандартной версией WinRar.exe.
А это не очень удобно, т.к. на экране появляется окно с процессом разархивации. Как сделать это в консольной версии?
1
Эксперт WindowsАвтор FAQ
18041 / 7644 / 891
Регистрация: 25.12.2011
Сообщений: 11,426
Записей в блоге: 17
18.03.2013, 15:37 13
Вами использовалась последняя версия архиватора?
Посмотрите, может у WinRAR есть Silent-ключ.
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
18.03.2013, 23:02  [ТС] 14
Dragokas, использовал версию 4.20. Silent-ключа я к сожалению не нашел. Странно конечно почему консольная версия так ущербна. Ну если других вариантов нет, то буду использовать все же консольную версию только для rar архивов. Обычная версия вообще не подходит
0
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
18.03.2013, 23:54 15
Цитата Сообщение от run82 Посмотреть сообщение
А это не очень удобно, т.к. на экране появляется окно с процессом разархивации. Как сделать это в консольной версии?
Bash
1
2
>nul "%rar%" e -or "%%a" *.txt *.doc "c:\2"
>nul "%rar%" d "%%a" *.txt *.doc
1
Эксперт WindowsАвтор FAQ
18041 / 7644 / 891
Регистрация: 25.12.2011
Сообщений: 11,426
Записей в блоге: 17
19.03.2013, 01:03 16
Саш, тут в другом проблема.
Консольная RAR не воспринимает тип архива ZIP и пр., даже если делаешь так (см. скрин).

А скрыть run82 просил GUI-шное окно, потому как WINRAR в отличие от RAR понимает другие форматы.

Кстати, что делает ключ -or ? (какое-то переименование - не понял)
Миниатюры
Разархивирование файлов по маске из архивов ARJ, RAR, ZIP с удалением из архива  
2
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
19.03.2013, 16:41 17
Цитата Сообщение от Dragokas Посмотреть сообщение
что делает ключ -or ?
Ключ -OR — переименовывать файлы автоматически
---------------------------------------------------------------------------
Автоматически переименовывать извлекаемые файлы, если файл с таким же именем уже существует. Переименованный файл получает имя вида 'filename(N).txt', где 'filename.txt' – исходное имя файла, а 'N' – номер, начинающийся с 1, и увеличивающийся, если файл существует.
Dragokas, тут наверное остаётся только вариант распаковки, переноса файлов с опредю расширением в другую папку и запаковку обратно.
1
5 / 5 / 0
Регистрация: 27.02.2013
Сообщений: 115
19.03.2013, 23:17  [ТС] 18
Dragokas, sov44, может есть другой архиватор который может работать с rar, zip архивами в консольном режиме? Хотя, даже не важно в консольном режиме или нет. Главное чтобы в автоматическом режиме. Проблема WinRar.exe даже не в том что появляется на экране процедура разархивации, она не мешает, а в том что если нет файлов для извлечения или нет архивов то появляются сообщения которые надо закрывать руками
Разархивирование файлов по маске из архивов ARJ, RAR, ZIP с удалением из архива

Название: 2.JPG
Просмотров: 800

Размер: 6.1 Кб
0
Эксперт WindowsАвтор FAQ
18041 / 7644 / 891
Регистрация: 25.12.2011
Сообщений: 11,426
Записей в блоге: 17
20.03.2013, 00:12 19
Попробуйте все тоже самое на 7za.exe
Ключи здесь: Ключи запуска программ, вспомогательные утилиты (Windows Resource Kit, Support Tools)
1
1778 / 760 / 130
Регистрация: 09.04.2011
Сообщений: 1,325
20.03.2013, 00:56 20
"сборная солянка"
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
SetLocal enabledelayedexpansion
set rar=Tools\Rar.exe
set arj=Tools\Arj.exe
set zip=Tools\7z.exe
for /f "delims=" %%a in ('dir /b/s "*.*" 2^>nul') do (
if /i "%%~xa"==".rar" (1>Nul 2>&1 "%rar%" e -or "%%a" *.txt "d:\2\"
                       1>Nul 2>&1 "%rar%" d "%%a" *.txt)
if /i "%%~xa"==".arj" (1>Nul 2>&1 "%arj%" e "%%a" *.txt -ht"d:\2" -y
                       1>Nul 2>&1 "%arj%" d "%%a" *.txt)
if /i "%%~xa"==".7z"  (1>Nul 2>&1 "%zip%" e "%%a" -o"d:\2\" *.txt -aou -r
                       1>Nul 2>&1 "%zip%" d "%%a" *.txt -r)
if /i "%%~xa"==".zip" (1>Nul 2>&1 "%zip%" e "%%a" -o"d:\2\" *.txt -aou -r
                       1>Nul 2>&1 "%zip%" d "%%a" *.txt -r)
)
pause
Не разобрался пока с ключами arj добавления номера к имени, если имя существует.
Скрипт и архиваторы во вложении. На экран сообщения не выводятся. Пробуйте.
Вложения
Тип файла: 7z 5.7Z (378.8 Кб, 41 просмотров)
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2013, 00:56
Помогаю со студенческими работами здесь

Архивирование и разархивирование ZIP архивов
Здравствуйте! Долго уже ищу, но не могу найти подходящего. Пробовал zLib - ничего не понял даже...

Распаковывание RAR архивов 7 zip в VBA
Здравствуйте, уважаемые форумчане. Как распаковать RAR архив при помощи 7 zip в VBA? Другого...

Программы для открытия архивов zip и rar
Сама не знаю как получилось, но я сумела поменять программы по умолчанию, для открытия архивов типа...

Добавление одного и того же файла во множество RAR- и ZIP-архивов
Добрый день. Перерыл пол инета но так и не нашел. Есть задача добавить один файл в десятки тысяч...

Создание zip/rar архива
Очень много смотрел, читал и так и не нашёл как создать архив с файлами на c# NET.2.0 Помогите :)

Создание архива rar/zip на C++
Народ, такая ситуация, мне необходимо создать архив rar или zip (желательно rar, запароленный) при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru