Wheee111
21-07-2014, 11:18
Доброго времени суток, читателем этой темы. Спасибо что зашли посмотреть, надеюсь, сможете помочь советом.
Пытаюсь склепать следующую штуку: контекстное меню при нажатии ПКМ по папке, при нажатии на которое выполняется 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
пару раз он отработал, потом по непонятной мне причине перестал функционировать, так как это было задумано. при том что содержимое нужного файла он меняет.
Идея всего этого безобразия следующая: возможность менять иконку папки через контекстное меню примерно таким образом:
http://www.folderico.com/images/screenshot1.jpg
Возможно есть смысл оформить вышенарисованный скрипт функцией, в которую будет передаваться только название иконки, ибо все остальное одно и тоже.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\Test1]
@=""
"ExtendedSubCommandsKey"=""
"Icon"="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"="ICOFolders\\Black.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black\command]
@="cmd /k \"cd /d %L && echo 1 >> 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\""
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red]
@="RED"
"Icon"="ICOFolders\\Red.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red\command]
@="cmd /k \"cd /d %L && echo 1 >> desktop.ini && attrib -r -a -s -h desktop.ini && del /f /q desktop.ini && echo [.ShellClassInfo] >> desktop.ini && echo IconResource=ICOFolders\\Red.ico,0 >> desktop.ini && echo [ViewState] >> desktop.ini && echo Mode= >> desktop.ini && attrib +s +h desktop.ini && exit\""
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green]
@="Green"
"Icon"="ICOFolders\\Green.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green\command]
@="cmd /k \"cd /d %L && echo 1 >> desktop.ini && attrib -r -a -s -h desktop.ini && del /f /q desktop.ini && echo [.ShellClassInfo] >> desktop.ini && echo IconResource=ICOFolders\\Green.ico,0 >> desktop.ini && echo [ViewState] >> desktop.ini && echo Mode= >> desktop.ini && attrib +s +h desktop.ini && exit\""
Собственно теперь сам вопрос: кто нибудь его сможет за меня "починить"?
Пытаюсь склепать следующую штуку: контекстное меню при нажатии ПКМ по папке, при нажатии на которое выполняется 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
пару раз он отработал, потом по непонятной мне причине перестал функционировать, так как это было задумано. при том что содержимое нужного файла он меняет.
Идея всего этого безобразия следующая: возможность менять иконку папки через контекстное меню примерно таким образом:
http://www.folderico.com/images/screenshot1.jpg
Возможно есть смысл оформить вышенарисованный скрипт функцией, в которую будет передаваться только название иконки, ибо все остальное одно и тоже.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Folder\shell\Test1]
@=""
"ExtendedSubCommandsKey"=""
"Icon"="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"="ICOFolders\\Black.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Black\command]
@="cmd /k \"cd /d %L && echo 1 >> 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\""
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red]
@="RED"
"Icon"="ICOFolders\\Red.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Red\command]
@="cmd /k \"cd /d %L && echo 1 >> desktop.ini && attrib -r -a -s -h desktop.ini && del /f /q desktop.ini && echo [.ShellClassInfo] >> desktop.ini && echo IconResource=ICOFolders\\Red.ico,0 >> desktop.ini && echo [ViewState] >> desktop.ini && echo Mode= >> desktop.ini && attrib +s +h desktop.ini && exit\""
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green]
@="Green"
"Icon"="ICOFolders\\Green.ico,0"
[HKEY_CLASSES_ROOT\Folder\shell\Test1\Shell\Green\command]
@="cmd /k \"cd /d %L && echo 1 >> desktop.ini && attrib -r -a -s -h desktop.ini && del /f /q desktop.ini && echo [.ShellClassInfo] >> desktop.ini && echo IconResource=ICOFolders\\Green.ico,0 >> desktop.ini && echo [ViewState] >> desktop.ini && echo Mode= >> desktop.ini && attrib +s +h desktop.ini && exit\""
Собственно теперь сам вопрос: кто нибудь его сможет за меня "починить"?