Консультация № 176783
19.02.2010, 16:16
0.00 руб.
0 13 2
Здравствуйте, уважаемые эксперты. Помогите, пожалуйста, с написанием скрипта. Необходимо, чтобы скрипт просматривал архивы *.rar и выводил все содержимое этих архивов (включая папки и файлы) в текстовый файл. Желательно, чтобы указывалась глубина папок.

Обсуждение

Неизвестный
19.02.2010, 16:31
общий
это ответ
Здравствуйте, Коньков Юрий Владимирович.

rar vb myarchive.rar > myarchive.txt
давно
Профессор
23061
930
19.02.2010, 17:39
общий
Коньков Юрий Владимирович:
чтобы скрипт просматривал архивы *.rar


Все архивы на винчестере (логическом диске)?

Об авторе:
The human is a fallen angel sometimes thinking back on the sky
давно
Модератор
137394
1850
19.02.2010, 21:26
общий
это ответ
Здравствуйте, Коньков Юрий Владимирович. Предлагаю bat-файл, который:

- будучи запущенным в текущей директории без параметров, выдаст в текстовый файл содержимое архивов в текущей директории и поддиректориях.
Пример запуска файла

LISTRAR.BAT

- запущенный с путём к конкретной папке в параметре, выдаст в текстовый файл содержимое архивов в этой директории и её поддиректориях.
Пример запуска файла

LISTRAR.BAT "D:\Мои архивы"

Путь к архиву и его наименование в текстовом файле выдаётся.

Вот код (Bat-файл должен быть сохранен в текстовый файл в DOS- кодировке (866) , и результаты его работы тоже будут в DOS кодировке)
необходимо настроить местоположение rar.exe, путь к выходному текстовому файлу, и маску архива (в принципе, rar позволяет работать и с другими архивами)
Код:
Echo Off
rem -----------------------------------------------------------------------------
rem Выдаём в текстовый файл содержимое архивов в папке и подпапках
rem В параметре bat-файла -путь к директории, где находятся архивы
rem Если в параметре путь не указан, берётся текущая директория
rem

rem Ниже настроить переменные под свои потребности
rem -----------------------------------------------------------------------------

Set ListFile=ListFile.txt
Set Rar="C:\Program Files\WinRAR\Rar.exe"
Set Maska=*.rar

rem -----------------------------------------------------------------------------


if '=='%1 GoTo ThisDir

Echo Директория "%~1" ------- %Date% %Time% >%ListFile%
for /R "%~1" %%i in (%Maska%) Do Call :RarView "%%~i"

GoTo View

:ThisDir

Echo Текущая директория ------- %Date% %Time% >%ListFile%
for /R %%i in (%Maska%) Do Call :RarView "%%~i"

:View

Echo ----------------------------------------------------------------------------- >>%ListFile%

GoTo End

:RarView

Echo ----------------------------------------------------------------------------- >>%ListFile%
Echo Архив %1 >>%ListFile%
Echo ----------------------------------------------------------------------------- >>%ListFile%

%Rar% VB %1 >>%ListFile%


:End

Готовый файл здесь.LISTRAR.BAT (1.3 кб)
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
24.02.2010, 10:53
общий
Alexander Babich:
ага
Неизвестный
24.02.2010, 10:56
общий
kolista:
Все хорошо, только некоторые файлы формата gz, а rar из командной строки их не видит... В этом и есть загвоздка...
Неизвестный
24.02.2010, 10:56
общий
Megaloman:
Все хорошо, только некоторые файлы формата gz, а rar из командной строки их не видит... В этом и есть загвоздка...
Неизвестный
24.02.2010, 10:56
общий
Alexander Babich:
Все хорошо, только некоторые файлы формата gz, а rar из командной строки их не видит... В этом и есть загвоздка...
давно
Модератор
137394
1850
24.02.2010, 11:40
общий
Коньков Юрий Владимирович:
чтобы скрипт просматривал архивы *.rar
- я не знаю, что такое формат gz (не встречал ни разу), но если это архив создан своим архиватором, то надо соответственно, и содержимое вытаскивать этим архиватором. По построению командного файла ничего не изменится, надо написать свою маску и свою строку выдачи содержимого для конкретного архиватора. Аналогичная история с Zip. Я не исследовал, какие архивы отображает rar для командной строки, так как Ваш вопрос задавался именно для rar.
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
24.02.2010, 13:07
общий
Вот вариант использования архиватора 7-Zip. Проверял работу на rar, zip архивах . Единственный недостаток - много ненужной информации. В частности, сходу не придумал как подавить заголовок вызова архиватора. Маска архива настраивается в строке
Set Maska=*.zip
Код:
Echo Off
rem -----------------------------------------------------------------------------
rem Выдаём в текстовый файл содержимое архивов в папке и подпапках
rem В параметре bat-файла -путь к директории, где находятся архивы
rem Если в параметре путь не указан, берётся текущая директория
rem

rem Ниже настроить переменные под свои потребности
rem -----------------------------------------------------------------------------

Set ListFile=ListFile.txt
Set Rar="C:\Program Files\7-Zip\7z.exe"
Set Maska=*.zip

rem -----------------------------------------------------------------------------


if '=='%1 GoTo ThisDir

Echo Директория "%~1" ------- %Date% %Time% >%ListFile%
for /R "%~1" %%i in (%Maska%) Do Call :RarView "%%~i"

GoTo View

:ThisDir

Echo Текущая директория ------- %Date% %Time% >%ListFile%
for /R %%i in (%Maska%) Do Call :RarView "%%~i"

:View

Echo ----------------------------------------------------------------------------- >>%ListFile%

GoTo End

:RarView

Echo ----------------------------------------------------------------------------- >>%ListFile%
Echo Архив %1 >>%ListFile%
Echo ----------------------------------------------------------------------------- >>%ListFile%

%Rar% l %1 >>%ListFile%


:End
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
24.02.2010, 14:37
общий
Цитата: 281367
Все хорошо, только некоторые файлы формата gz, а rar из командной строки их не видит... В этом и есть загвоздка...


rar нормально видит архивы упакованные с помощью gzip

и что означает "не видит"?
давно
Модератор
137394
1850
24.02.2010, 15:09
общий
kolista:
Я пробовал rar vb архив.zip - не работает (ничего не выдаёт). Хотя распаковать может. WinRar позволяет интерактивно смотреть на содержимое архивов не rar. 7-Zip выдаёт содержимое и rar и zip (gz не пробовал, не попадалось).
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Неизвестный
24.02.2010, 15:14
общий
kolista:
Запускаю команду: C:\Program files\Winrar>rar /l /v d:666.tar.gz
Выдает 666.tar.gz не является RAR-архивом
давно
Мастер-Эксперт
425
4118
24.02.2010, 15:24
общий
Коньков Юрий Владимирович:
Необходимо, чтобы скрипт просматривал архивы *.rar

Все хорошо, только некоторые файлы формата gz

А при чём тут,формат gz? RAR их не делает и делать никогда не умел. Вы что, по ходу дела просто напросто добавляете условия? Тогда Ваша задача в принципе нерешаема - мало ли что Вы потом ещё придумаете. Вы уж, пожалуйста, сформулируйте то, что Вы хотите сделать чётко и однозначно, а то так и не дождётесь рабочего ответа.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа