arsvrn
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вот пример листинга некоего архива, выдаваемого архиватором UHArc по команде uharc l -y -d2 uha.uha. Цитата: UHARC 0.6a ----- high compression multimedia archiver ----- BETA version Copyright (c) 1997-2005 by Uwe Herklotz All rights reserved 06 Feb 2005 **** Freeware for non-commercial use **** contact: uwe.herklotz@gmx.de **** Processing archive "uha.uha" (created: 25-May-2005, 11:41). file size date time attr crc-32 ------------------------------------------------------------------------------- Formats\ace.fmt 55808 27-Jan-2004 03:30:00 ---A C4500DA4 Formats\cab.fmt 50176 27-Jan-2004 03:30:00 ---A E59709A3 Default.sfx 52736 27-Jan-2004 03:30:00 ---A 5D7E432F RarExt.dll 121344 27-Jan-2004 03:30:00 ---A EC5D815D rarreg.key 462 29-Jan-2004 11:47:26 ---A 2FC3B32E Formats\tar.fmt 54784 27-Jan-2004 03:30:00 ---A E94B8FDB Formats\UNACEV2.DLL 75264 27-Jan-2004 03:30:00 ---A 237E323C WinRAR.exe 843776 29-Jan-2004 11:47:38 ---A 4813E3A7 ------------------------------------------------------------------------------- 8 files 1254350 448857 packed (PPM-mode), ratio: 35.8% | Как видно, в листинге имеет место быть как полезная информация (имена, даты, размеры и т.д.), так и бесполезная (для Multiarc'a) - Copyright и т.д. Директивы Start и End служат для указания Multiarc'у местоположения полезной информации. Start = "-------------------------------------------------------------------------------" - указывает, с какого места в выходном листинге архиватора начинается собственно листинг архива. Это просто текстовая строка, совпадение с которой Multiarc ищет в выходном листинге и со следующей начинает разбор содержимого архива. В данном примере легко заметить, что список файлов начинается после строки "---...---". Если строка в параметре Start начинается с символа "^", то в качестве образца для поиска совпадения используется строка со следующего после "^" символа и в листинге ищется совпадающая строка, расположенная строго в начале строки. В противном случае совпадающий текст может находиться в любом месте строки листинга. End = "-------------------------------------------------------------------------------" - указывает, где в выходном листинге архиватора заканчивается листинг архива. Все аналогично директиве Start. Директивы Format0...FormatN описывают формат, в котором выводится листинг файлов и папок. Описание формата представляет собой текстовую строку, в которой для описания формата используется набор ключевых символов: n - имя файла; e (ТС) - расширение файла; z - исходный размер файла; p - упакованный размер файла; c - контрольная сумма; d - день; t - месяц (в виде числа); TTT - месяц в виде трехбуквенного сокращения (Jan, Feb, Mar, ...); y - год; h - часы (24-х часовой формат); H - модификатор часов для 12-ти часового формата (a - до полудня, p - после полудня); m - минуты; s - секунды; a - атрибуты файла; . - удалить пробелы в конце имени файла и добавить имя с точкой; * - пропустить до первого пробела или конца строки. В приведенном примере листинга для каждого файла используется две строки: в первой выводится имя файла (длинное), во второй - все прочие атрибуты. Следовательно, необходимо использовать два формата (Format0 и Format1). В Format0 прописываем длинную строку "nnn...nnn", указывающую Multiarc'у, что в этой строке передается только имя файла: Format0 = "nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn" В Format1 необходимо с помощью ключевых символов прописать информацию о том, какие данные находятся в данном месте строки листинга (причем с точностью до позиции символа). Лучше всего это сделать, расположив строку из листинга над строкой Format и используя моноширинный шрифт (здесь пропорциональный): Format1 = " zzzzzzzzzz dd-TTT-yyyy hh:mm:ss aaaa cccccccc" " 121344 27-Jan-2004 03:30:00 ---A EC5D815D" Сколько позиций отвести на размер файла - неизвестно, берем для 1 Тб | Всего записей: 1238 | Зарегистр. 08-09-2004 | Отправлено: 14:40 25-05-2005 | Исправлено: arsvrn, 16:31 25-05-2005 |
|