Ru-Board.club
← Вернуться в раздел «Программы»

» примочка для ассоцирования файла имени, а не расширению

Автор: oshizelly
Дата сообщения: 04.02.2005 13:58
Проблема вот какая. Как известно, Windows связывает (associate) понятие "тип файла" с расширением файла (то есть, цепочкой символов от конца полного имени файла до последней точки в имени). (В отличие от некоторых других OS, где система ориентируется на содержимое файлов.)
От типа файла, определенного системой, в свою очередь зависит:
1) какой прогой файл открывается по умолчанию;
2) с какой иконкой файл отображается во всех диалогах на базе Explorer.

Теперь собственно вопрос. Как сделать так, чтобы система при принятии решений, какой прогой файл открывать и с какой иконой отображать, смотрела не на расширение (или, по крайней мере, не только на расширение), а на другие элементы имени файла, заданные пользователем по шаблону в настройках. Например, по предпоследнему расширению файла (ДО последней точки). То есть, чтобы можно было задать, например, что файл
aaaaaaa.BAM.doc
открывался бы программой Trali-Vali.exe и отображался бы с иконкой C:\bam.ico, а файл
aaaaaaa.TARARAM.doc
открывался бы программой mustdie.exe и отображался бы с иконкой C:\tararam.ico.
NB!
Оба момента важны: и то, чем открывать, и то, какую икону показывать. Хотя, возможно, что для иконок и для ассоциирования проги можно использовать разные решения.

Насколько я понимаю, собственными средствами Винды это никак не реализуется. Но, возможно, есть какая-то хитрая надстройка над Explorer...
Буду всем признателен за любые подсказки и идеи.
Автор: EZH
Дата сообщения: 04.02.2005 14:14
Думаю можно накатать .bat файл (или прогу написать), и ассоциировать все .doc на открытие этим батником. А прогой/батом анализировать что до doc - и соответственно исполнять...
Автор: oshizelly
Дата сообщения: 04.02.2005 22:29
EZH
Не очень понятно, как ты представляешь себе реализацию этой идеи. И в любом случае это никак не решает проблемы с ассоциированием иконок.
Автор: bredonosec
Дата сообщения: 05.02.2005 02:11

Цитата:
И в любом случае это никак не решает проблемы с ассоциированием иконок.
- А вариант с использованием шорткатов не подойдет? То есть, в интересующей папке будут лежать не сами файлы, а шорткаты к ним. А шорткаты можно любой иконкой обозначить.
Правда насчет обработки прогой.. Хотя, опять же, можно назначать их не на сам файл, а на прогу, которой в параметрах командной строки писать, какой файл открывать.
Автор: GeMir
Дата сообщения: 05.02.2005 02:26
oshizelly
IMHO проще на Mac OS перейти...
Автор: oshizelly
Дата сообщения: 05.02.2005 15:41
bredonosec

Цитата:
А вариант с использованием шорткатов не подойдет? То есть, в интересующей папке будут лежать не сами файлы, а шорткаты к ним.

Дело в том, что нет какой-то специальной "интересующей папки". Речь идет о глобальных настройках системы.
Вообще, странно, по-моему, что нет какой-то примочки, которая это решала бы просто и удобно. IMHO все это реализовать на программном уровне совсем не сложно.
Автор: bredonosec
Дата сообщения: 06.02.2005 04:42

Цитата:
IMHO все это реализовать на программном уровне совсем не сложно.
Реализуй. Если правильно тебя понял, - как навеску к файл-менеджеру. Мы токмо спасибо скажем (если придумаем, для чего юзать)
GeMir

Цитата:
IMHO проще на Mac OS перейти...
//офф//Где-то видел высказывание, что заместо того, чтоб подсказать настройку софтинки тебе предложат сменить версию проги, язык в системе, ОСь, железо, страну проживания, половую ориентацию, но не то, о чем спросил.
Автор: oshizelly
Дата сообщения: 06.02.2005 15:00

Цитата:
Мы токмо спасибо скажем (если придумаем, для чего юзать)

Поскольку в студии имеет место непонимание, для чего нужен такой изврат, чтобы икону ассоциировать не с расширением, а с другим элементом имени файла, то привожу элементарный пример.
У юзера имеются свои постоянные как-бы-типы (категории) файлов. Например у бухгалтера следующие "типы":
- счета
- договоры
- платежки.
Каждый такой "тип" обозначается собственным дополнительным расширением в имени файла. Все документы, естественно, в разных форматах и с разными стандартными расширениями (.doc, .htm, rtf, (отсканированные -.tif, .jpg, .pdf и пр.).
Например, все счета - "inv" (от "invoice"): "счет за тушите свет.inv.doc"; все договоры - "cnt" (от "contract"): "договор на поставку соленых огурцов.cnt.rtf", все платежки - "pay" (от "payment"): "платежка за бордельные услуги.pay.tif" и т.д. и т.п.

То есть, имеются два критерия деления файлов на типы: стандартное - по бинарной структуре файла и, соответственно, ассоциированной программе (DOC - документ Word - MS Word, HTM - документ HTML - Opera, TIF - графический файл - ACDSee, и пр.) и пользовательское - по содержимому документа (inv, cnt, pay и т.д.)

Ну вот, теперь надо добиться такого идеала. Юзер открывает директорий - и единым орлиным взором сразу видит, сколько чего у него там. Особенно удобно, если имя файла целиком не умещается на экране, например, на экране видно: "Главспецстройснаббумлесновосибирскглавупр...". Юзер знает, это наш деловой партнер, но какого типа документ. Стандартная иконка, ассоциированная системой на ".pdf, показывет икону Acrobat'а и ничего не говорит о содержании документа. А юзеру наплевать, PDF это или TIFF, ему важно сразу понимать, что содержится в этом документе, то ли это счет, то ли копия нашей платежки. А если икона ассоциирована по маске *inv*, то сразу ясно, что это инвойс.
Вот для этого и надо, чтобы икона файла в Explorer и файловом манагере ассоциировать по маске:
*inv* - счет (изображени счЕтов)
*cnt* - договор (изображение кукиша)
и пр. и и пр.

Возможно, все это бред и та же задача может быть решена гораздо более простым способом. Тогда буду безмерно благодарен за подсказку такого более простого решения.

З.Ы.
В какой-то (очень небольшой) степени что-то очень отдаленное имеется в Total Commander (раскрашивание имен файлов по произвольной маске, даже с поддержкой регулярных выражений) - но это, конечно, совсем не то, что надо.
Аналогично и с ассоциированной программой, но этого я объяснять не буду, а то уж и так целый роман накатал. Но если кому интересно, то могу и это объяснить.
Автор: bredonosec
Дата сообщения: 07.02.2005 11:22

Цитата:
и та же задача может быть решена гораздо более простым способом.
- Весьма вероятно. Например:
Изначальное раскидывание доков по папкам со значащими названиями.
D:/Docs/ /Payments/
/Invoice/
/Contracts/
/Personal/
Причем, завести порядок, при котором они изначально попадают в эти папки, а не по мере надобности выискиваются в общей мусорке. То есть, настроить прием с почты так, чтоб по маске бросало куда следует. Или по ситуации конкретной.

ЗЫ. А на папки можно и навесить кукишы-черепки, сам фон (если експлорером бухи будут ходить) можно кукишем заделать
Автор: vito333
Дата сообщения: 07.02.2005 13:26
oshizelly
я тут разбирался как-то с ассоциированием, так вот. Винда иконки может отображать только в зависимости от расширения. Так что переделать это можно только в каком-либо файл-браузере - файл-менеджере, но не в системе.
Второе. Анализировать дополнительные ключевые строки в имени-расширении файла несложно, но только своей прогой.
Так что единственный вариант по запуску - ассоциировать с определенным типом свою программу, она при запуске файла с этим расширением проанализирует и соответственно запустит то что надо. Ну про мелочи типа мониторинга ассоциации и пр. я не говорю

Добавлено:
есть кстати утилиты, которые при клике на файле выдают список программ, которыми можно открыть-запустить кликнутый файл. Названий не помню, но есть пара точно.
Автор: oshizelly
Дата сообщения: 07.02.2005 18:36
bredonosec

Цитата:
Изначальное раскидывание доков по папкам со значащими названиями. .... настроить прием с почты так, чтоб по маске бросало куда следует.

Нет, это не есть корректное решение. Надо, чтобы все решалось на уровне глобальных настроек системы, а не зависело от аккуратности пользователя при сортировке. И с чего ты решил, что основной источник постуления документов - через почту? И на дискетах приносят, и сами пишут, и сканируют...
Кроме того, предложенная тобой организация документов неудобна пользователю. Скажем, документы, относящиеся к одной сделке, должны бы быть в одном директории, а не в разных.

vito333

Цитата:
Винда иконки может отображать только в зависимости от расширения. Так что переделать это можно только в каком-либо файл-браузере - файл-менеджере, но не в системе.

Жаль.
Может, тогда хоть плагин какой-нибудь под Total Commander? Я не очень представляю, насколько это сложно реализовать.

Цитата:
есть кстати утилиты, которые при клике на файле выдают список программ, которыми можно открыть-запустить кликнутый файл. Названий не помню, но есть пара точно.

Ну хоть что-нибудь про них помнишь? Какое-нибудь ключевое слово, или имя производителя, или хоть где видел?
Автор: igor_andreev
Дата сообщения: 07.02.2005 20:57
С иконками действительно врядли что получится.
А открытие файлов можно средствами самой винды реализовать. Например ваяешь скрипт типа

Код:
If WScript.Arguments.Count = 1 Then
' f - файл, переданный в качестве параметра скрипту
f = WScript.Arguments.Item(0)
Set fso = CreateObject("Scripting.FileSystemObject")
Set ws = WScript.CreateObject("WScript.Shell")
' читаем четыре последние буквы в имени файла и расширение
prefix = Right( fso.GetBaseName(f), 4) & "." & fso.GetExtensionName(f)
' рабочая папка - та, в которой находится файл, переданный как параметр
ws.CurrentDirectory=fso.GetParentFolderName(f)

Select Case prefix
Case ".int.doc" ' .int.doc открываем wordpad-ом
ws.Run "wordpad.exe " & Chr(34) & f & Chr(34), 1, false
Case ".cnt.doc" ' .cnt.doc открываем Word-ом
ws.Run "WINWORD.EXE " & Chr(34) & f & Chr(34), 1, false
' Case ".еще_какие-то_три_буквы.doc"
' ws.Run "еще_какое-то.exe " & f, 1, false
Case Else ' все остальные *.doc открываем Word-ом
ws.Run "WINWORD.EXE " & Chr(34) & f & Chr(34), 1, false
End Select

End If
Set fso = Nothing
Set ws = Nothing
WScript.Quit
Автор: artfavourites
Дата сообщения: 08.02.2005 00:03
oshizelly

Цитата:
Как сделать так, чтобы система при принятии решений, какой прогой файл открывать и с какой иконой отображать, смотрела не на расширение


оригинальное расширение сохранять обязательно?
под aaaaa.TARARAM.doc - настроить никак не получится
а вот под aaaaa.doc.TARARAM - сколько угодно

можно еще так между прочим пользователям и обьяснить, что эти файлы открываются лишь на эксклюзивных именных редакциях офисных программ, и в каждый файл встроен радиомаячек, который позволяет его найти в случае похищения

Добавлено:
Кстати - попробуйте сохранить что-нибудь из Word в HTML формат,
и убедитесь, что Explorer его от обычного HTML отличает.
Автор: guntis
Дата сообщения: 08.02.2005 00:24
oshizelly

Цитата:
Может, тогда хоть плагин какой-нибудь под Total Commander


Как я понял, важно то, чтобы с первого взгляда было понятно, к какой пользовательской категорий относится файл. Можно такой вариант - это не совсем то, что требовалось (иконки не меняются), но имхо даже удобнее:

С помощью content плагинов, в TC можно отображать и то, что содержится в полях Properties --> Summary. То есть, просто пишешь, например, в поле Summary --> Subject (или в другом) эти inv, cnt или pay, а TC показывает не только колонки name, ext, size, но и subject (это все просто настраивается) - и с первого взгляда видно, из какой категорий файл. Кликнув на заглавие колонки, можно сразу и рассортировать.
Кстати, на макинтошах такая фича была с самого начала.



Автор: oshizelly
Дата сообщения: 08.02.2005 13:48
igor_andreev

Цитата:
А открытие файлов можно средствами самой винды реализовать. Например ваяешь скрипт типа...

Спасибо, так наверное, можно. Только сложно все это неимоверно. Душа просит простых и красивых решений. Или простую и красивую готовую утилиту, которую кто-то уже написал, а мне осталось только настроить.

artfavourites

Цитата:
Оригинальное расширение сохранять обязательно?
под aaaaa.TARARAM.doc - настроить никак не получится
а вот под aaaaa.doc.TARARAM - сколько угодно

Оригинальное расширение сохранять не обязательно. НО... Как ты себе это представляешь? Файлы одной пользовательской категории могут быть разными по бинарной структуре, то есть, например, инвойс может быть и документом PDF, и TIFF, и HTML, и MS DOC. Если ассоциируем расширение .TARARAM, скажем, на Acrobat Reader, а это окажется документ MS Word, получится нехорошо.

gunits

Цитата:
С помощью content плагинов, в TC можно отображать и то, что содержится в полях Properties --> Summary.

Опять не то Далеко не у всех типов файлов есть поля Properties, это, в основном, мелкосфтовые проги, ну и еще Adobe. Кроме того, невозможно заставить пользователей корректно заполнять эти поля. Потому я и пытаюсь все увязать именно с именем файла, которое есть всегда и у всех.
Автор: royt
Дата сообщения: 16.03.2005 08:32
Всё, что запрашивалось в заголовке этого топика, вполне реализуемо программно, с некоторыми оговорками. А вот что-то готовое посоветовать не могу, т.к. не попадалось (иначе бы сам использовал).

offtopic: сам безуспешно ищу редактор, который бы позволял удобно редактировать ассоциации Explorer-а и давал над ними полный контроль - на даже такого нету (штатный редактор со списком "File Types" позволяет редактировать далеко не всё), в итоге приходится лазить ручками по реестру.

Если интересует программная реализация - искать по ключевым словам "shell extension", "IconHandler". В двух словах - пишется dll-ка, в которой реализуется подобие COM-объекта, эта dll-ка регистрируется в реестре и всё... Именно так работают утилитки-расширения оболочки, например, показывающие для mp3 файлов иконки с разным изображением в зависимости от битрейта (пример - MP3ext: http://www.mutschler.de/mp3ext/, доступны исходники).
Автор: los2
Дата сообщения: 16.03.2005 12:19
royt,

Цитата:
сам безуспешно ищу редактор, который бы позволял удобно редактировать ассоциации Explorer-а и давал над ними полный контроль - на даже такого нету (штатный редактор со списком "File Types" позволяет редактировать далеко не всё), в итоге приходится лазить ручками по реестру

эту программу смотрел?
_http://www.spearit.com/about_AssociateThis.html
Автор: vito333
Дата сообщения: 16.03.2005 13:13
royt
хм, интересно, спасибо за ссылку
Автор: royt
Дата сообщения: 17.03.2005 07:29
los2
Спасибо за ссылку, ищется лекарство.

Интересно только, умеет ли оно редактировать "EditFlags" (FTA_OpenIsSafe, FTA_AlwaysUnsafe, FTA_NoRecentDocs и др.), как например "File Association Manager" (к текущей версии последнего как раз лекарство так и не нашел).
Автор: bredonosec
Дата сообщения: 17.03.2005 07:56
royt

Цитата:
ищется лекарство.
- и сколько еще раз повторить надо, чтоб наконец стали искать варез в варезнике, а не тут?
Автор: royt
Дата сообщения: 25.03.2005 14:03
bredonosec А кто сказал, что я ищу я тут лекарство, Уважаемый?! Это просто комментарий - ищется именно прога (которую можно было бы заставить работать не две недели, не в варезнике же ее искать!) А может Вы по сути сообщеня что-то подскажете - я спрашивал про "EditFlags"? (или Вы такими пустыми комментариями себе 3 тыс. сообщений и набрали?! оффтоп, всё, заканчиваю...)

И еще, уже по сути: если кому-то нужна программка, заставляющая Windows (точнее ее оболочку - Explorer; это касается и диалогов типа "открытие файла", и многих программ, отображающих для файлов их "системные" иконки - например Opera, WinRAR) отображать для определенных файлов нужную иконку - отпишите здесь; если будет хотя бы несколько желающих - попробую что-нибудь простенькое сварганить, вернусь в эту ветку и отпишу. Интересует также, по какому критерию хотелось бы сопоставлять файлам иконки: скажем, 1) по совпадению имени с заданным регулярным выражением; 2) ну (весьма надуманно) по размеру файла; что еще?...

Только не обещаю что будет редактор настроек программы - скорее всего придется в реестре самостоятельно (для отдельных расширений файлов) создавать ключик, и в нем прописывать условия/параметры отображения иконок .

ps. Не создаю эту тему в программинге, т.к. вопрос к [потенциальным] пользователям, а не программистам.

Добавлено:
Народ, а ведь я похоже нашел то, что искали в самом начале : Cognitive Software. Насчет иконок, зависящих от имени файла - смотрите там внизу "By Name IconHandler". Заодно там и куча других подобных примочек.

ps. Предложение по программке остается в силе, приму пожелания
Автор: oshizelly
Дата сообщения: 03.04.2005 19:37

Цитата:
Народ, а ведь я похоже нашел то, что искали в самом начале : Cognitive Software. Насчет иконок, зависящих от имени файла - смотрите там внизу "By Name IconHandler"....

Да, судя по описанию - это действительно то, про что я спрашивал. Вернее, ответ на один из двух моих вопросов (второй был про ассоциирование программы с именем файла). Спасибо!

Цитата:
ps. Предложение по программке остается в силе, приму пожелания

Извиняюсь, но зачем же тогда изобретать велоспед, если такая программа уже имеется? Или ты видишь в своей будущей проге что-то, чего нет в "By Name IconHandler"? Оно было бы неплохо, с настройкой по регулярным выражениям. А насчет того, чтобы иконка зависела от размера файла - это IMHO уже изврат. Но может я просто не вижу очевидных возможностей применения.
Автор: vito333
Дата сообщения: 12.04.2005 02:04
royt
хорошая ссылка
Автор: bredonosec
Дата сообщения: 12.04.2005 03:22
royt

Цитата:
А кто сказал, что я ищу я тут лекарство,
Вы.
Цитата:
ищется лекарство.

Цитата:
Это просто комментарий - ищется именно прога (которую можно было бы заставить работать не две недели, не в варезнике же ее искать!)
Вообще-то именно в варезнике. Создать там тему, если её еще нет и т.д. Правила всё-таки соблюдать надобно. (п.1.2.0)
Цитата:
смотрите там внизу "By Name IconHandler".
А вот за это спасибо!
Автор: oshizelly
Дата сообщения: 04.02.2005 13:58
Проблема вот какая. Как известно, Windows связывает (associate) понятие "тип файла" с расширением файла (то есть, цепочкой символов от конца полного имени файла до последней точки в имени). (В отличие от некоторых других OS, где система ориентируется на содержимое файлов.)
От типа файла, определенного системой, в свою очередь зависит:
1) какой прогой файл открывается по умолчанию;
2) с какой иконкой файл отображается во всех диалогах на базе Explorer.

Теперь собственно вопрос. Как сделать так, чтобы система при принятии решений, какой прогой файл открывать и с какой иконой отображать, смотрела не на расширение (или, по крайней мере, не только на расширение), а на другие элементы имени файла, заданные пользователем по шаблону в настройках. Например, по предпоследнему расширению файла (ДО последней точки). То есть, чтобы можно было задать, например, что файл
aaaaaaa.BAM.doc
открывался бы программой Trali-Vali.exe и отображался бы с иконкой C:\bam.ico, а файл
aaaaaaa.TARARAM.doc
открывался бы программой mustdie.exe и отображался бы с иконкой C:\tararam.ico.
NB!
Оба момента важны: и то, чем открывать, и то, какую икону показывать. Хотя, возможно, что для иконок и для ассоциирования проги можно использовать разные решения.

Насколько я понимаю, собственными средствами Винды это никак не реализуется. Но, возможно, есть какая-то хитрая надстройка над Explorer...
Буду всем признателен за любые подсказки и идеи.
Автор: EZH
Дата сообщения: 04.02.2005 14:14
Думаю можно накатать .bat файл (или прогу написать), и ассоциировать все .doc на открытие этим батником. А прогой/батом анализировать что до doc - и соответственно исполнять...
Автор: oshizelly
Дата сообщения: 04.02.2005 22:29
EZH
Не очень понятно, как ты представляешь себе реализацию этой идеи. И в любом случае это никак не решает проблемы с ассоциированием иконок.
Автор: bredonosec
Дата сообщения: 05.02.2005 02:11

Цитата:
И в любом случае это никак не решает проблемы с ассоциированием иконок.
- А вариант с использованием шорткатов не подойдет? То есть, в интересующей папке будут лежать не сами файлы, а шорткаты к ним. А шорткаты можно любой иконкой обозначить.
Правда насчет обработки прогой.. Хотя, опять же, можно назначать их не на сам файл, а на прогу, которой в параметрах командной строки писать, какой файл открывать.
Автор: GeMir
Дата сообщения: 05.02.2005 02:26
oshizelly
IMHO проще на Mac OS перейти...
Автор: oshizelly
Дата сообщения: 05.02.2005 15:41
bredonosec

Цитата:
А вариант с использованием шорткатов не подойдет? То есть, в интересующей папке будут лежать не сами файлы, а шорткаты к ним.

Дело в том, что нет какой-то специальной "интересующей папки". Речь идет о глобальных настройках системы.
Вообще, странно, по-моему, что нет какой-то примочки, которая это решала бы просто и удобно. IMHO все это реализовать на программном уровне совсем не сложно.

Страницы: 12

Предыдущая тема: Abilon - RSS Feed Aggregator


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.