Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка Windows 2000/XP/2003 (http://forum.oszone.net/forumdisplay.php?f=32)
-   -   [решено] Как присвоить папке определенную иконку (http://forum.oszone.net/showthread.php?t=254048)

Ivan_009 14-02-2013 22:32 2090652

Как присвоить папке определенную иконку
 
Подскажите возможно ли. После установки системы у меня создается папка на рабочем столе. Так вот как этой папке присвоить определенную иконку...

Painkiller 14-02-2013 22:54 2090671

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 2090706

Painkiller, Спасибо конечно но меня интересут чтобы все автоматом сделалось...

Painkiller 15-02-2013 00:03 2090734

Цитата:

Цитата Ivan_009
Painkiller, Спасибо конечно но меня интересует чтобы все автоматом сделалось... »

А что мешает создать в папке на рабочем столе ini и через батник применить атрибуты ?

boss911 15-02-2013 05:20 2090801

Код:

@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

Поскольку в пакетном файле присутствует кириллица, сохраняем его в DOS (866) кодировке.

Ivan_009 15-02-2013 13:04 2090997

boss911, Спасибо большое :up все работает...

gora 03-03-2013 16:44 2103273

Цитата:

Цитата Ivan_009
как папке присвоить определенную иконку... »

Положите в эту папку нужную иконку (с любым именем) и батник:
Код:

@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 2210888

Доброго времени суток. Возникла загвоздка с вашим батником, gora. Опишу подробнее последовательность действий.
читать дальше »
Требуется кастомизировать папку. Для примера и чистоты эксперимента создал новую папку в корне диска с именем 123

Поместил в нее иконку с именем 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%"

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

содержимое созданного Desktop.ini
[.ShellClassInfo]
IconResource=200.ico,0
изменим вид на табличный (для сравнения ниже) - иконка не применяется

Причем если переместить эту папку в другое место и изменить вид на таблицу, иконка применяется.

вернув на место папку и задав вид табличный - иконка применяется.

а вот в режиме отображения плитка не отображается иконка,перегружал проводник, и по f5 толку нет. После манипуляций с перемещением, в свойствах папки через какое-то время появляется иконка

В чем может быть проблема, подскажите пожалуйста!

boss911 01-09-2013 12:11 2210971

Цитата:

Цитата Cl3r1k
В чем может быть проблема, подскажите пожалуйста! »

А может причина в кеше иконок? Не знаю, где в 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 2211218

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 2211318

Cl3r1k

Скачайте аддон RebuildIconCache, из архива достаньте "REBUILDI.exe", пропишите запуск этой утилиты в конец батника. После сброса кеша иконок с помощью этой утилиты, проблема на месте?

Можете еще попробовать:
Код:

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

Cl3r1k 02-09-2013 08:17 2211347

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 2211361

Cl3r1k

Вообще-то REBUILDI.exe я предлагал провисать в батник для присвоения иконки, но уже не важно. Попробуйте еще Icon Cache Cleaner, чтобы наверняка отсечь вопрос по сбросу кеша иконок.

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

Cl3r1k 03-09-2013 07:27 2211834

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 2211891

Цитата:

Цитата Cl3r1k
изменил батник »

Это я вам и хотел предложить, в случае позитивного результата. Просто на 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 2212029

Все получилось, сейчас на рабочем проверил, все работает после сброса кэша.
Спасибо за оптимизацию кода!


Время: 10:28.

Время: 10:28.
© OSzone.net 2001-