Как найти CDR по известному текстовому фрагменту?

  • Автор темы Автор темы _MBK_
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 683
Реакции
10 996
Предположим на диске множество кореловских файлов разбросанных по разным каталогам. Требуется найти файл, созданный неизвестно когда, неизвестного названия, единствено, что о нем известно - в нем содержится некий текстовый фрагмент. Как можно такое сделать? В принципе, если файлы были бы записаны без компрессии, наверное, можно было попробовать стандартным поиском по вхождению слова, но файлы в основном все компрессированы и самых различных версий от 9 до 13. Реально ли сделать такое? Для других графических форматов с компрессией (DOC, EPS, AI, PDF и т.д.) существуют специальные утилиты, а есть ли что либо подобное для корела? Я как-то сходу не нашел, может самому написать?
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Нет такого, писать придется самому.

Подсказка - для того чтобы не перебирать все объекты в документе, вам поможет команда Application.CorelScript.ExtractText("d:\textfilename.txt") которая весь текст из документа сохранит на дисковый файл. Имя текстового файла можно формировать например из полного пути к файлу заменяя \ на _ txtfile="text-" & replace(activedocument.FilePath,"\","_") & Activedocument.Name & ".txt"
 
Ответ: Как найти CDR по известному текстовому фрагменту?

То есть, написать скрипт, который будет по очереди открывать все кореловские файлы, экстрагировать из них текст, и искать в них? Что-то это черезчур по-моему, если файлов порядка нескольких сот, она их больше суток таким образом индексировать будет - файлы бывают очень тяжелые. :-( А попроще никак?
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Нет
Надо комп не слишком дохлый, чтобы окрывание было быстрее :-)
 
Ответ: Как найти CDR по известному текстовому фрагменту?

в любом случае, процесс займет достаточно времени... - именно открывания файлов, и не в машине дело...
допустим 1 файл - 10 сек; имеем 200 файлов.
10*200=2000\60=30,(3) - короче пол часа...
 
Ответ: Как найти CDR по известному текстовому фрагменту?

за ночь 5000 файлов.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

На быстром компе открываются файлы быстрее :)
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Ну да, 10 сек! У меня пустой файл и то дольше открывается. Есть файлы размером несколько сот метров открываются минут по 20. К тому же такой процесс поиска фоном не запустишь - сразу все ресурсы сожрет. Нет, нужен другой выход, формат файлов простой - обычный RIFF, механизм компрессии тоже сейчас примерно мне ясен, попробую с какой скоростью распаковывать будет, а там, посмотрим, может утилиту поиска напишу.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Гм. я думал, очевидно что предлагается запустить экстракт всего текста во всех файлах и сложить текст в своего рода базу, которая займет всего пару мег и будет использована для поиска.

А пустой файл открываться должен на любом компе за долю секунды, чтобы добиться этого (в тысячный раз повторяю) используйте патч color styles changeclol.exe - поиск по форуму да поможет вам!

А на крутом компе файлы сколько б ни занимали открываться будут раз в 100 быстрее чем на тормозном :-) LOL
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Насколько я понимаю, этот патч только для 11 версии, к тому же ускоряет открытие только кривых файлов, а тут вопрос несколько другой. Комп действительно дохлый, файловых архивов много, и часть из них на дисках. Каждый диск может понадобиться раз в сто лет и для индексирования каждого сутки времени тратить жалко. Тем более есть побочные плюсы - к примеру такой утилитой можно будет, не открывая файл, сразу посмотреть, какой текст там не переведен в кривые и какие шрифты используются. Кроме того, на базе этого можно попробовать продолжить мой старый проект CDR doctor по восстановлению сбойных CDR файлов, так что я, наверное, все таки этим займусь.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

патч для любых версий :) что в нем намекает на экслюзивность для 11? Что значит кривые файлы? стандартные от корела с встроенными colorstyles? жаль что разработчики не знают до сих пор что это кривые файлы, все бы жить стало легче.

Желаю успехов с утилитой, подозреваю что это будет не просто...
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Я не нашел на форуме универсальный, нашел патч для cdrcore110.dll а это 11 корел, там так явно и сказано. А как универсальный сделать? Кривые файлы - файлы с чрезмерным количеством лишних стилей, но тормоза бывают не только изза этого. У меня, например есть файлик, целиком векторный, состоящий из кучи мелких обьектов рисованых кисточкой, весит метра два всего, зато открывается минут 40. Что касается сложности - не так страшен черт, повторяю, разборка файла на кусочки у меня есть, декомпрессия тоже, вроде, заработала, причем довольно шустро по скорости. Осталось собрать все воедино и поэкспериментировать на куче разнородных файлов.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

На форуме поиском по changeclol несколько сообщений, в первом же из них ссылка: http://forum.rudtp.ru/search.php?searchid=517638 :-)

Тот векторный файл может содержать те самые colorstyles. Интересно в любом случае увидеть файл, который на моем компе будет открываться дольше 10 секунд. Если есть возможность, скиньте на почту ( woxxom (at) gmail (dot) com)
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Раз уж Вы умеете, то можете просто выкусывать из файлов фрагмент содержащий цветовые стили, он помечен тем же тегом - clol, тогда их и открывать не понадобится, а можно будет просто обработать директорию с файлами.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Хоть с патчем хоть без него, все равно тормозит - комп просто у меня медленный. А программа текст выдергивает мгновенно - вот сами зацените сырую тестовую версию: http:\\mbkhome.narod.ru\cdrfind\CDRFIND.EXE
Пока что она умеет только показывать информацию о файле (тексты, шрифты, внутреннюю структуру)
Никто не подскажет где можно накопать формат тэга txsm? А то немного через задницу все написано, хоть и работает.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Уоу! сильно!
 
Ответ: Как найти CDR по известному текстовому фрагменту?

А вот теперь и поиск по текстовому фрагменту работает, зацените! Файл лежит там же.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Если интересно, то вот cdrcpr.dll от Х3, не знаю есть ли отличия...
 
Ответ: Как найти CDR по известному текстовому фрагменту?

wOxxOm сказал(а):
Если интересно, то вот cdrcpr.dll от Х3, не знаю есть ли отличия...

У меня работает и на cdrcpr.dll от x3 я специально проверял.
 
Ответ: Как найти CDR по известному текстовому фрагменту?

Выложил еще более новую версию: 1.2 Теперь можно ставить программу как вьювер для CDR файлов по умолчанию, сделал более удобный показ результатов поиска и исправил несколько мелких ошибок.
У меня вообще безумная идея возникла - к примеру, если текст переведен в кривые, то поиск бесполезен - так может попробовать добавить поиск по специфическим объектам , скажем, данного цвета или размера?
 
Статус
Закрыто для дальнейших ответов.