Свои иконки у папок

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

dftpnk
Сообщения: 2
Зарегистрирован: Пт май 27, 2011 15:40

Иконка для папки

Сообщение dftpnk »

Сегодня решал вопрос по теме. Очень удобно и наглядно выглядят папки программ. Или можно просто положить в папку иконку и применить её.
Это как замена утилитам, которые делают тоже самое, только ещё и в памяти сидят :)
Поискал в интернете, но кое что пришлось сделать руками
Файл folderico.cmd положил в %COMMANDER_PATH%
Курсор ставите на exe или ico файл, в той папке, иконку которой меняем.
И жмём эту кнопку:

Код: Выделить всё

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\folderico.cmd
%P%N
C:\Program Files\Total\Fileicons.dll,9
 
%P

-1
Работает в XP, в Win7 сегодня проверю.
Вот листинг Folderico.cmd

Код: Выделить всё

ECHO OFF
REM 
REM	Установка иконки папки из exe-файла или ICO-файла, подставленного как параметр
REM	folderico.cmd d:\folder\file.exe
REM
REM	Переделанный вариант bat-файла, взятого отсюда
REM	http://forum.soft32.com/win4/change-folder-icon-command-line-ftopict241201.html
REM 
ECHO ON
cd %~sdp1
attrib -h -r desktop.ini 
echo [.ShellClassInfo]>desktop.ini
echo IconFile=%1>>desktop.ini
echo IconIndex=0 >>desktop.ini
attrib +h +r desktop.ini
attrib +r "%CD%"
Ну вот, собственно, и всё.
Всех благ.

ПОПРАВКА: Данная команда затрёт файл desktop.ini, который может находиться в исходной папке.
Так что - ОСТОРОЖНО! ГАРАНТИЙ НИКАКИХ НЕ ДАЮ!
Так что лучше, предварительно, посмотреть что там внутри папки.
Последний раз редактировалось dftpnk Пт май 27, 2011 16:26, всего редактировалось 2 раза.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Иногда desktop.ini содержит иную информацию помимо пути и индекса иконки. А такой бат-файл затирает старый новым.
dftpnk
Сообщения: 2
Зарегистрирован: Пт май 27, 2011 15:40

Сообщение dftpnk »

MVV писал(а):Иногда desktop.ini содержит иную информацию помимо пути и индекса иконки. А такой бат-файл затирает старый новым.
Спасибо за замечание. Сейчас что-нибудь подправим.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Уже есть тема "Свои иконки у папок".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Batya
Вот именно. В создании отдельной темы не вижу никакой надобности. Объединено со старой темой.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

IconFile, IconIndex, а разве одной строчки не будет достаточно:

Код: Выделить всё

[.ShellClassInfo]
IconResource=Иконка.ico
?
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

ask-rus
А отчего бы не взять и самому в своей ОС не попробовать? По крайней мере, в XP вышеприведённый вариант с IconResource не работает. Там должна быть пара строк с IconFile и IconIndex (если первая строка ссылается на конкретный ICO-файл, вторая должна присутствовать со значением 0).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Avada писал(а):А отчего бы не взять и самому в своей ОС не попробовать?
У меня на Win8 работает.
Avada писал(а):По крайней мере, в XP вышеприведённый вариант с IconResource не работает. Там должна быть пара строк с IconFile и IconIndex
Во-во, понятно.

Добавлено спустя 25 минут:

Нуждаюсь в минималистичном портабельном решении по созданию desktop.ini с одним ключом:

Код: Выделить всё

[.ShellClassInfo]
IconResource=%COMMANDER_PATH%\ICON\Иконка.ico
в каталоге под курсором и каталогах выделенных с атрибутом desktop.ini - Архивный.

Пользование под ОС Windows 8 в TC и нигде более.
Последний раз редактировалось ask-rus Вс мар 10, 2013 17:18, всего редактировалось 1 раз.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

.cmd:

Код: Выделить всё

echo [.ShellClassInfo]> 111.txt
echo IconResource=%%COMMANDER_PATH%%\ICON\Иконка.ico>> 111.txt
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Serge Yolkin
А с каким параметром/-ами запускать? Пробовал разные - ни один файл не смог создать. Мерцание консольного окна - явный минус, придётся его решать утилитами.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

ask-rus
Ключей не предусмотрено, в коде заменить 111.txt (как бы у меня это стандартный тестовый файл, извиняюсь, если это не очевидно) на desktop.ini, а путь/имя иконки - на реальные, если Иконка.ico приведена для примера.

Соответственно, при запуске создавался файл 111.txt (наверное, и сейчас валяется в том каталоге)

Если нужны параметры, давай-ка начнём с техзадания.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Моя ошибка - я создавал значок в папке, где уже есть desktop.ini (скрытый, системный). Оказывается, командник его не заменяет, а заменить как раз следует (для меня не критично).
Serge Yolkin писал(а):Если нужны параметры, давай-ка начнём с техзадания.
Собственно, оно было таким:
ask-rus писал(а):в каталоге под курсором и каталогах выделенных
а не в текущем каталоге, как сейчас.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

ask-rus
Не-не-не! Я как раз сейчас занимаюсь любовью с таким же техзаданием, когда каждый день выясняется, что заказчик совсем не то имел ввиду. Правда, за деньги.

Давай так: если алгоритм работы описывать ломает, дай, хотя бы, пример строки вызова будущего (гипотетического) скрипта со всеми передаваемыми ему параметрами (например, иконка - всегда одна и та же?)
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Serge Yolkin писал(а):если алгоритм работы описывать ломает
Нисколько.

1. Активная файловая панель TC;
2. Курсор TC расположен на каталоге, или же каталоги выделены, и положение курсора значения не имеет;
3. Если курсор не на каталоге - ничего не делать, но сообщить об этом.
4. Если помимо каталогов выделены файлы - ничего не делать, но сообщить об этом (должны быть выделены только каталоги).
5. Активируя скрипт, например, с панели инструментов, в каталоге под курсором или выделенных каталогах создаётся/-ются файл/-ы desktop.ini с содержимым:

Код: Выделить всё

[.ShellClassInfo]
IconResource=%COMMANDER_PATH%\ICON\Иконка.ico
и атрибутом Архивный;
6. Если каталоги выделены, после выполнения скрипта желательно выделение снимать.
7. Иконка всегда одна и та же, должна быть задана в теле скрипта или в идеале - в параметрах запуска.
8. Портабельность требуется - без регистраций утилит и библиотек, правок реестра.
9. Использование в скрипте утилит, вроде TCFS2, TCMC приветствуется.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

ask-rus
Если срочность не "прям щас" (и не "ещё вчера"), то до конца недели время выберу. Надеюсь, WSF+JScript устроит? (батником - пожалуй, можно, но кривовато будет: проверок много). И обрабатывать будем %S - мне так проще, если возражений нет. Портабельность - если не запрещены скрипты в системе (встречал пару параноиков) - автоматическая, внешние утилиты не нужны, правда, с выделением из скрипта я возится не буду, но, вроде, оно и так снимается, по крайней мере, с моими предыдущими скриптами оно так и есть.
Ответить