Страница 3 из 6

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

Добавлено: Пт май 27, 2011 15:58
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, который может находиться в исходной папке.
Так что - ОСТОРОЖНО! ГАРАНТИЙ НИКАКИХ НЕ ДАЮ!
Так что лучше, предварительно, посмотреть что там внутри папки.

Добавлено: Пт май 27, 2011 16:10
MVV
Иногда desktop.ini содержит иную информацию помимо пути и индекса иконки. А такой бат-файл затирает старый новым.

Добавлено: Пт май 27, 2011 16:16
dftpnk
MVV писал(а):Иногда desktop.ini содержит иную информацию помимо пути и индекса иконки. А такой бат-файл затирает старый новым.
Спасибо за замечание. Сейчас что-нибудь подправим.

Добавлено: Пт май 27, 2011 17:39
Batya
Уже есть тема "Свои иконки у папок".

Добавлено: Пт май 27, 2011 17:56
Avada
Batya
Вот именно. В создании отдельной темы не вижу никакой надобности. Объединено со старой темой.

Добавлено: Сб мар 09, 2013 13:30
ask-rus
IconFile, IconIndex, а разве одной строчки не будет достаточно:

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

[.ShellClassInfo]
IconResource=Иконка.ico
?

Добавлено: Сб мар 09, 2013 13:55
Avada
ask-rus
А отчего бы не взять и самому в своей ОС не попробовать? По крайней мере, в XP вышеприведённый вариант с IconResource не работает. Там должна быть пара строк с IconFile и IconIndex (если первая строка ссылается на конкретный ICO-файл, вторая должна присутствовать со значением 0).

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

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

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

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

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

Пользование под ОС Windows 8 в TC и нигде более.

Добавлено: Сб мар 09, 2013 23:23
Serge Yolkin
.cmd:

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

echo [.ShellClassInfo]> 111.txt
echo IconResource=%%COMMANDER_PATH%%\ICON\Иконка.ico>> 111.txt

Добавлено: Вс мар 10, 2013 10:17
ask-rus
Serge Yolkin
А с каким параметром/-ами запускать? Пробовал разные - ни один файл не смог создать. Мерцание консольного окна - явный минус, придётся его решать утилитами.

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

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

Если нужны параметры, давай-ка начнём с техзадания.

Добавлено: Пн мар 11, 2013 07:03
ask-rus
Моя ошибка - я создавал значок в папке, где уже есть desktop.ini (скрытый, системный). Оказывается, командник его не заменяет, а заменить как раз следует (для меня не критично).
Serge Yolkin писал(а):Если нужны параметры, давай-ка начнём с техзадания.
Собственно, оно было таким:
ask-rus писал(а):в каталоге под курсором и каталогах выделенных
а не в текущем каталоге, как сейчас.

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

Давай так: если алгоритм работы описывать ломает, дай, хотя бы, пример строки вызова будущего (гипотетического) скрипта со всеми передаваемыми ему параметрами (например, иконка - всегда одна и та же?)

Добавлено: Пн мар 11, 2013 14:30
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 приветствуется.

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