Показать полную графическую версию : [решено] Как присвоить папке определенную иконку
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 и через батник применить атрибуты ?
@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 все работает...
как папке присвоить определенную иконку... »
Положите в эту папку нужную иконку (с любым именем) и батник:@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%"Запустите батник
Доброго времени суток. Возникла загвоздка с вашим батником, 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
В чем может быть проблема, подскажите пожалуйста!
В чем может быть проблема, подскажите пожалуйста! »
А может причина в кеше иконок? Не знаю, где в 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
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%"
но так-же нет положительных результов.
Cl3r1k
Скачайте аддон RebuildIconCache (http://forum.oszone.net/thread-101110.html), из архива достаньте "REBUILDI.exe", пропишите запуск этой утилиты в конец батника. После сброса кеша иконок с помощью этой утилиты, проблема на месте?
Можете еще попробовать:
ie4uinit.exe -ClearIconCache
На ХР эффекта не замечаю, другой ОС под рукой нет.
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 обе папки отображаются с иконкой. Накачу на вирт машину чистую и там проверю, там то с кэшем проблем не должно быть.
Cl3r1k
Вообще-то REBUILDI.exe я предлагал провисать в батник для присвоения иконки, но уже не важно. Попробуйте еще Icon Cache Cleaner (http://review-software.ru/icon-cache-cleaner.htm), чтобы наверняка отсечь вопрос по сбросу кеша иконок.
Мне иногда приходится работать на Win7, частенько натыкаюсь на глюки с иконками. Больше всего бесит глюк, когда, например, заменяешь приложение/файл с такой-то иконкой, на приложение/файл уже с другой иконкой, старая иконка еще долго будет отображаться, пока это приложение не переименуешь или не перенесешь в другой каталог, такая же болячка и с папками, и F5 не помогает. Еще одно новшество в Win7, которое меня раздражает. В XP такая болячка встречается редко и легко лечится через F5.
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.
изменил батник »
Это я вам и хотел предложить, в случае позитивного результата. Просто на 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
Все получилось, сейчас на рабочем проверил, все работает после сброса кэша.
Спасибо за оптимизацию кода!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.