Войти

Показать полную графическую версию : [решено] Как присвоить папке определенную иконку


Ivan_009
14-02-2013, 22:32
Подскажите возможно ли. После установки системы у меня создается папка на рабочем столе. Так вот как этой папке присвоить определенную иконку...

Painkiller
14-02-2013, 22:54
Ivan_009, создаешь в нужной папке desktop.ini c содержимым :
Пример :
[.ShellClassInfo]
IconResource=C:\Program Files\Uninstall Tool\UninstallTool.exe,0 - путь к иконке


Потом через командную строку ставишь атрибуты :
Пример :
Attrib +s "C:\Program Files\Uninstall Tool -путь к нужной папке

Всё=)

Ivan_009
14-02-2013, 23:35
Painkiller, Спасибо конечно но меня интересут чтобы все автоматом сделалось...

Painkiller
15-02-2013, 00:03
Painkiller, Спасибо конечно но меня интересует чтобы все автоматом сделалось... »
А что мешает создать в папке на рабочем столе ini и через батник применить атрибуты ?

boss911
15-02-2013, 05:20
@Echo off

SET MYFOLDER="%UserProfile%\Рабочий стол\Справочные данные"

IF NOT EXIST %MYFOLDER% GOTO:EOF
IF EXIST %MYFOLDER%\Desktop.ini DEL /Q /AH %MYFOLDER%\Desktop.ini >nul 2>&1

1>%MYFOLDER%\Desktop.ini (
ECHO [.ShellClassInfo]
ECHO IconFile=%SystemRoot%\system32\SHELL32.dll
ECHO IconIndex=23
)

ATTRIB +S +H %MYFOLDER%\Desktop.ini

EXIT
Поскольку в пакетном файле (http://www.oszone.net/2245) присутствует кириллица, сохраняем его в DOS (866) кодировке.

Ivan_009
15-02-2013, 13:04
boss911, Спасибо большое :up все работает...

gora
03-03-2013, 16:44
как папке присвоить определенную иконку... »
Положите в эту папку нужную иконку (с любым именем) и батник:@Echo Off
ChCp 1251>Nul
Set fldr=%~dp0
If Exist "%~dp0desktop.ini" Attrib -H -S "%~dp0desktop.ini"
For %%i In ("%~dp0*.ico") Do (
(Echo [.ShellClassInfo]
Echo IconResource=%%~nxi,0
Ver | Find "6.">Nul || (Echo IconFile=%%~nxi& Echo IconIndex=0)
)>"%~dp0desktop.ini"
)
Attrib +H +S "%~dp0desktop.ini"
Attrib +R "%fldr:~0,-1%"Запустите батник

Cl3r1k
01-09-2013, 07:23
Доброго времени суток. Возникла загвоздка с вашим батником, gora. Опишу подробнее последовательность действий.
Требуется кастомизировать папку. Для примера и чистоты эксперимента создал новую папку в корне диска с именем 123
http://savepic.org/4439233.jpg
Поместил в нее иконку с именем 200.ico и ваш батник малость подредактированный с кодом
@Echo Off
ChCp 1251>Nul
Set fldr=%~dp0
If Exist "%~dp0Desktop.ini" Attrib -H -S "%~dp0Desktop.ini"
For %%i In ("%~dp0*.ico") Do (
(Echo [.ShellClassInfo]
Echo IconResource=%%~nxi,0
Ver | Find "6.">Nul || (Echo IconFile=%%~nxi& Echo IconIndex=0)
Attrib +S +H %%~nxi
)>"%~dp0Desktop.ini"
)
Attrib +S +H "%~dp0Desktop.ini"
Attrib +R "%fldr:~0,-1%"
и запустил, поднялся на уровень выше, отображение папки сменилось но иконка не применилась.
http://savepic.org/4426945.jpg
содержимое созданного Desktop.ini
[.ShellClassInfo]
IconResource=200.ico,0
изменим вид на табличный (для сравнения ниже) - иконка не применяется
http://savepic.org/4431041.jpg
Причем если переместить эту папку в другое место и изменить вид на таблицу, иконка применяется.
http://savepic.org/4430017.jpg
вернув на место папку и задав вид табличный - иконка применяется.
http://savepic.org/4428993.jpg
а вот в режиме отображения плитка не отображается иконка,перегружал проводник, и по f5 толку нет. После манипуляций с перемещением, в свойствах папки через какое-то время появляется иконка
http://savepic.org/4422849.jpg
В чем может быть проблема, подскажите пожалуйста!

boss911
01-09-2013, 12:11
В чем может быть проблема, подскажите пожалуйста! »
А может причина в кеше иконок? Не знаю, где в Win6.x хранится кеш икнок, но в XP это делается так (пакетный файл/батник):
@Echo off

TASKKILL /F /IM explorer.exe >nul
DEL /Q /AH "%UserProfile%\Local Settings\Application Data\IconCache.db" >nul 2>&1
START explorer.exe

EXIT
Если что, то поиском поищите "IconCache.db" и пропишите правильный путь. Предполагаю (нет под рукой Win6.x), что будет лежать тут:
%UserProfile%\AppData\Local\IconCache.db

Cl3r1k
01-09-2013, 20:55
boss911, Подозреваю что не в кэше. IconCache.db находится по
%UserProfile%\AppData\Local\IconCache.db
Но даже запустив батник с кодом
@Echo off

TASKKILL /F /IM explorer.exe >nul
DEL /Q /AH "%UserProfile%\AppData\Local\IconCache.db" >nul 2>&1
START explorer.exe

EXIT
нет положительного эффекта.
Забыл указать ранее, что иконка не применяется после использования батника, если же указывать ее вручную, через свойства папки, то иконка применяется почти сразу (иногда нужно f5 нажать), и если сменить IconResource=D:\123\200.ico,0 на IconResource=200.ico,0 т.е указав относительный путь, то и так тоже работает, причем содержимое desktop.ini при ручной настройке имеет доп. строки.
[.ShellClassInfo]
IconResource=D:\123\200.ico,0
[ViewState]
Mode=
Vid=
FolderType=Pictures

Пробовал модифицировать батник отgora, с добавлением строк
@Echo Off
ChCp 1251>Nul
Set fldr=%~dp0
If Exist "%~dp0Desktop.ini" Attrib -H -S "%~dp0Desktop.ini"
For %%i In ("%~dp0*.ico") Do (
(Echo [.ShellClassInfo]
Echo IconResource=%%~nxi,0
Echo [ViewState]
Echo Mode=
Echo Vid=
Echo FolderType=Pictures
Ver | Find "6.">Nul || (Echo IconFile=%%~nxi& Echo IconIndex=0)
Attrib +S +H %%~nxi
)>"%~dp0Desktop.ini"
)
Attrib +S +H "%~dp0Desktop.ini"
Attrib +R "%fldr:~0,-1%"
но так-же нет положительных результов.

boss911
02-09-2013, 02:38
Cl3r1k

Скачайте аддон RebuildIconCache (http://forum.oszone.net/thread-101110.html), из архива достаньте "REBUILDI.exe", пропишите запуск этой утилиты в конец батника. После сброса кеша иконок с помощью этой утилиты, проблема на месте?

Можете еще попробовать:
ie4uinit.exe -ClearIconCache
На ХР эффекта не замечаю, другой ОС под рукой нет.

Cl3r1k
02-09-2013, 08:17
boss911, прописывал запуск REBUILDI.exe после сброса иконок
@Echo off

TASKKILL /F /IM explorer.exe >nul
DEL /Q /AH "%UserProfile%\AppData\Local\IconCache.db" >nul 2>&1
START explorer.exe

EXIT
START REBUILDI.exe
так-же без изменений.
Скорее всего проблема не с кэшем иконок.
Проверял на рабочем и домашнем пк, на обоих 7-ка х64 Ult
Заметил некоторую закономерность, если создать 2 папки, чтоб они были в одной папке (например в R:\icons), в одной применив батник с рядом лежащей иконкой, а для второй назначить иконку вручную, то после f5 обе папки отображаются с иконкой. Накачу на вирт машину чистую и там проверю, там то с кэшем проблем не должно быть.

boss911
02-09-2013, 09:28
Cl3r1k

Вообще-то REBUILDI.exe я предлагал провисать в батник для присвоения иконки, но уже не важно. Попробуйте еще Icon Cache Cleaner (http://review-software.ru/icon-cache-cleaner.htm), чтобы наверняка отсечь вопрос по сбросу кеша иконок.

Мне иногда приходится работать на Win7, частенько натыкаюсь на глюки с иконками. Больше всего бесит глюк, когда, например, заменяешь приложение/файл с такой-то иконкой, на приложение/файл уже с другой иконкой, старая иконка еще долго будет отображаться, пока это приложение не переименуешь или не перенесешь в другой каталог, такая же болячка и с папками, и F5 не помогает. Еще одно новшество в Win7, которое меня раздражает. В XP такая болячка встречается редко и легко лечится через F5.

Cl3r1k
03-09-2013, 07:27
boss911, Огромное спасибо, я ошибался, проблема действительно связана с кэшем иконок. После удаления всех кэшов с помощью Icon Cache Cleaner и перезагрузки, иконки отобразились.
Хотел отойти от использования стороннего софта и изменил батник, но вот удалять тумбы с папки %UserProfile%\AppData\Local\Microsoft\Windows\Explorer не хочет, и с админскими правами запускал, так-же.
изменил атрибуты на AI, даже перезагрузка ПК не потребовалась и все ок ок. Еще раз спасибо.
@Echo off

TASKKILL /F /IM explorer.exe >nul
DEL /Q /AH "%UserProfile%\AppData\Local\IconCache.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_32.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_96.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_256.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_1024.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_idx.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_sr.db" >nul 2>&1
START explorer.exe

EXIT
Заметил, что при первом запуске Icon Cache Cleaner, он находит %UserProfile%\AppData\Local\IconCache.db, если установить только на нем галочку, применить и перегрузить, иконка отобразится, а если удалять IconCache.db с помощью батника, и перегрузить, эффекта 0.

boss911
03-09-2013, 10:41
изменил батник »
Это я вам и хотел предложить, в случае позитивного результата. Просто на XP этих путей/файлов нет.

Я немного не понял, так у вас получилось добиться результата при помощи вышеуказанного батника, без применения Icon Cache Cleaner?

Я бы предложил так:
@Echo off

TASKKILL /F /IM explorer.exe >nul
DEL /Q /AH "%UserProfile%\AppData\Local\IconCache.db" >nul 2>&1
DEL /Q /AI "%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\thumbcache_*.db" >nul 2>&1
START explorer.exe

EXIT

Cl3r1k
03-09-2013, 15:24
Все получилось, сейчас на рабочем проверил, все работает после сброса кэша.
Спасибо за оптимизацию кода!




© OSzone.net 2001-2012