|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Смена иконки папки. контекстное меню (реестр) + CMD |
|
CMD/BAT - [решено] Смена иконки папки. контекстное меню (реестр) + CMD
|
Новый участник Сообщения: 31 |
Доброго времени суток, читателем этой темы. Спасибо что зашли посмотреть, надеюсь, сможете помочь советом.
Пытаюсь склепать следующую штуку: контекстное меню при нажатии ПКМ по папке, при нажатии на которое выполняется cmd скрипт со следующим кодом: cmd /k "cd /d %L \\Попадаем в ту папку, по которой нажали пкм && echo 1 >> desktop.ini \\Создаем или меняем скрытый файл desktop.ini, который содержит свойства папки типа значка и вида папки. && attrib -r -a -s -h desktop.ini \\убираем все "лишние" атрибуты, чтобы удалить его, если он есть && del /f /q desktop.ini \\Удаляем этот файлик && echo [.ShellClassInfo] >> desktop.ini && echo IconResource=ICOFolders\Black.ico,0 >> desktop.ini \\пишем путь к иконке && echo [ViewState] >> desktop.ini \\какая-то порнуха, не знаю зачем оно, но оно есть внутри этого файла. && echo Mode= >> desktop.ini \\.. && attrib +s +h desktop.ini \\Возвращаем аттрибуты && exit" \\ exit Идея всего этого безобразия следующая: возможность менять иконку папки через контекстное меню примерно таким образом: Возможно есть смысл оформить вышенарисованный скрипт функцией, в которую будет передаваться только название иконки, ибо все остальное одно и тоже. Собственно теперь сам вопрос: кто нибудь его сможет за меня "починить"? |
|
Отправлено: 11:18, 21-07-2014 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Wheee111:
[решено] Как присвоить папке определенную иконку |
|
Отправлено: 13:08, 21-07-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать gora, спасибо за ответ. вопрос по 7x64.
у папки "read only" не стоит. тестировал на новых, старых, с полными правами etc.. Ваш вариант слегка не удобен тем, что значки нужно каждый раз копировать откуда-то в нужную папку. можно ли их подтягивать из одного и того же места? |
Отправлено: 17:35, 21-07-2014 | #3 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата Wheee111:
Примерно так: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\Test1] @="" "ExtendedSubCommandsKey"="" "Icon"="C:\\ICOFolders\\Red.ico,0" ;"Position"="Top" ;Крайне не рекомендую. "MUIVerb"="Сменить иконку" "SubCommands"="" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell] [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black] @="Black" "Icon"="C:\\ICOFolders\\Black.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black\command] @="cmd /c \"cd /d \"%L\"& attrib -s -h desktop.ini>nul& echo [.ShellClassInfo]>desktop.ini& echo IconResource=C:\\ICOFolders\\Black.ico,0>>desktop.ini& attrib +s +h desktop.ini& attrib +r \"%L\"& exit\"" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red] @="Red" "Icon"="C:\\ICOFolders\\Red.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red\command] @="cmd /c \"cd /d \"%L\"& attrib -s -h desktop.ini>nul& echo [.ShellClassInfo]>desktop.ini& echo IconResource=C:\\ICOFolders\\Red.ico,0>>desktop.ini& attrib +s +h desktop.ini& attrib +r \"%L\"& exit\"" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green] @="Green" "Icon"="C:\\ICOFolders\\Green.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green\command] @="cmd /c \"cd /d \"%L\"& attrib -s -h desktop.ini>nul& echo [.ShellClassInfo]>desktop.ini& echo IconResource=C:\\ICOFolders\\Green.ico,0>>desktop.ini& attrib +s +h desktop.ini& attrib +r \"%L\"& exit\"" . |
|
Отправлено: 18:11, 21-07-2014 | #4 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Wheee111:
Цитата Wheee111:
|
|||
Отправлено: 18:13, 21-07-2014 | #5 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать gora, Премного благодарен за скриптик. он таки отработал нормально. но есть пара вопросов еще, и был бы весьма признателен, если бы помогли с ними.
1) переделал команду в реестре на следующее чудовище: cmd /k "cd /d %L" && attrib -h -s *.ico && del *.ico && copy /Y C:\ICOFolders\Black.ico Black.ico && copy /Y C:\ICOFolders\c.cmd c.cmd && c.cmd && del c.cmd && attrib +h +s black.ico && exit *где c.cmd - Ваш скрипт. Если я правильно понял, то переменная %%~nxi равна *имя_иконки*.ico,0 Пардон за глупый вопрос, не силен в скриптах. т.е. в тушку Вашего скрипта хочу добавить 2) возможно я что-то не так понял, но что если в папке будет лежать несколько ico файлов? 3) Может быть знаете команду обновления иконки, которая исполняется при назначении иконки через свойства папки? (если задавать через Свойства\настройка\сменить значок, то новый значок появляется сразу же) В принципе чистка кэша иконок вариант, но для этого нужно "убивать" explorer.exe, и при этом закрываются открытые папки. а это не удобно. Чистка кэша таким образом: ie4uinit.exe -ClearIconCache почему то не помогает. ____________________________________ Цитата gora:
Цитата gora:
Цитата gora:
|
|||
Последний раз редактировалось Wheee111, 23-07-2014 в 12:49. Причина: добавил ответы на сообщения выше. Отправлено: 11:26, 23-07-2014 | #6 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Попробуйте этот скрипт:
@Echo Off ChCp 1251>Nul :: Скрипт SetIcon.cmd :: Запуск скрипта SetIcon.cmd "Путь к папке у которой меняем иконку" "Имя файла иконки без пути" Set fldr=%~1 If Not Defined fldr Exit If "%fldr:~-1%"=="\" Set fldr=%fldr:~0,-1% Set icon=%~2 If Not Defined icon Exit :: Папка с иконками и скриптом SetIcon.cmd Set home=c:\ICOFolders If Exist "%fldr%\desktop.ini" Attrib -H -S "%fldr%\desktop.ini" If "%icon%"=="No" ( Del "%fldr%\desktop.ini" Attrib -R "%fldr%" Exit ) (Echo [.ShellClassInfo] Echo IconResource="%home%\%icon%",0 Ver | Find "6.">Nul || (Echo IconFile="%home%\%icon%"& Echo IconIndex=0) )>"%fldr%\desktop.ini" Attrib +H +S "%fldr%\desktop.ini" Attrib +R "%fldr%" |
Последний раз редактировалось gora, 23-07-2014 в 19:10. Причина: дополнил режимом восстановления стандартной иконки Отправлено: 12:57, 23-07-2014 | #7 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать gora, Шикарно. это как раз то, что я имел в виду в первом посте.
только я туплю и не могу в строке запуска передать путь к папке скрипту. Если путь забиваю статикой- всё отлично. а как туда подставить результат работы команды? Прошу прощения за очередной глупый вопрос. в итоге Вы за меня реализовали целиком идею ) |
Отправлено: 15:54, 23-07-2014 | #8 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата Wheee111:
![]() Тогда попробуйте запустить reg файл. Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Folder\shell\Test1] @="" "ExtendedSubCommandsKey"="" "Icon"="C:\\ICOFolders\\Red.ico,0" "MUIVerb"="Сменить иконку" "SubCommands"="" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell] [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black] @="Black" "Icon"="C:\\ICOFolders\\Black.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black\command] @="C:\\ICOFolders\\SetIcon.cmd \"%L\" \"Black.ico\"" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red] @="Red" "Icon"="C:\\ICOFolders\\Red.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red\command] @="C:\\ICOFolders\\SetIcon.cmd \"%L\" \"Red.ico\"" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green] @="Green" "Icon"="C:\\ICOFolders\\Green.ico,0" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green\command] @="C:\\ICOFolders\\SetIcon.cmd \"%L\" \"Green.ico\"" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\zDefault] @="Restore Default" [HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\zDefault\command] @="C:\\ICOFolders\\SetIcon.cmd \"%L\" \"No\"" |
|
Последний раз редактировалось gora, 23-07-2014 в 19:11. Причина: дополнил режимом восстановления стандартной иконки Отправлено: 17:33, 23-07-2014 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Добавление пользовательских пунктов в контекстное меню (файлы, папки и т.д.) | R.M.L | Оформление Windows XP | 159 | 07-03-2021 14:10 | |
Блог - Как добавить пункт «Закрепить в меню Пуск» в контекстное меню папки | hb860 | Microsoft Windows 7 | 4 | 18-10-2012 06:04 | |
Ресурсы - [решено] Как добавить иконки в контекстное меню XP | А_н_д_р_ей | Оформление Windows XP | 6 | 26-12-2011 20:50 | |
CMD/BAT - [решено] Смена расположения папки через реестр | luvgalz | Скриптовые языки администрирования Windows | 2 | 20-01-2011 14:46 | |
Интерфейс - контекстное меню папки | nureke | Microsoft Windows 2000/XP | 1 | 05-04-2008 09:11 |
|