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

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

Веталь_Забродский@fb 09-05-2013 11:48 2147057

Смена значка папки из командной строки
 
можно ли через командную строку поменять иконку(значок) папке?
и как это сделать?

Iska 09-05-2013 12:35 2147082

Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=%ProgramFiles%\Mozilla Firefox

(
        echo [.ShellClassInfo]
        echo IconFile=%sPath%\firefox.exe
        echo IconIndex=0
) >"%sPath%\desktop.ini"

attrib.exe +r "%sPath%"

endlocal
exit /b 0

Естественно, можно просто указывать *.ico файл. Если расположить его в той же папке — можно не указывать путь к файлу иконки.

Desktop.ini — Википедия
Отсюда и ниже.

Веталь_Забродский@fb 09-05-2013 13:09 2147098

объясни что каждая строчка означает плиз
зарание спасибо

Iska 09-05-2013 14:30 2147136

Что именно не понятно?

Веталь_Забродский@fb 09-05-2013 21:18 2147326

что означают с 2 по 9 строчку

Iska 09-05-2013 22:01 2147348

Веталь_Забродский@fb, нет нужды дублировать вопрос в PM.

читать дальше »
Код:

01: @echo off
02: setlocal enableextensions enabledelayedexpansion
03:
04: set sPath=%ProgramFiles%\Mozilla Firefox
05:
06: (
07:        echo [.ShellClassInfo]
08:        echo IconFile=firefox.exe
09:        echo IconIndex=0
10: ) >"%sPath%\desktop.ini"
11:
12: attrib.exe +r "%sPath%"
13:
14: endlocal
15: exit /b 0

01, 07, 08, 09
Код:

echo /?

02
Код:

setlocal /?

04
Код:

set /?

06-10
Группировка команд скобками для группировки их вывода в файл.

12
Код:

attrib.exe /?

14
Код:

endlocal /?

15
Код:

exit /?

Georgio 09-05-2013 22:24 2147361

Примечание.


Цитата:

Цитата Iska
Код:

attrib.exe +r "%sPath%"
»

- для Windows XP не принципиально, для Windows Vista - ? (вероятно, нужно), для Windows 7, 8 - обязательно.


Возможен также вариант:

Код:

ATTRIB +S "%sPath%"
Так делают некоторые сторонние программы.

Iska 09-05-2013 23:00 2147393

Цитата:

Цитата Georgio
- для Windows XP не принципиально »

Принципиально.

Georgio 09-05-2013 23:15 2147405

Для Windows XP проверял. Не принципиально. Возможна только задержка отображения до обновления папки или, в крайнем случае, до перезагрузки.

Iska 10-05-2013 02:08 2147439

Цитата:

Цитата Georgio
Для Windows XP проверял. Не принципиально. »

Georgio, описывайте, как проверяли. У меня после снятия с папки атрибута Read-Only — её пользовательская иконка меняется на стандартную.

Georgio 10-05-2013 03:16 2147444

Iska, попробуйте просто скопировать готовый файл desktop.ini из папки с нестандартным значком в другую папку без атрибутов R и/или S и обновить её. А вот снятие этих атрибутов с уже "атрибутированной" папки с нестандартным значком действительно прекращает его отображение. На всякий случай: у меня SP2.

Iska 10-05-2013 06:42 2147451

Цитата:

Цитата Georgio
Iska, попробуйте просто скопировать готовый файл desktop.ini из папки с нестандартным значком в другую папку без атрибутов R и/или S и обновить её. »

Скопировал. Обновил. Иконка у папки осталась стандартной.

В то же время задание/снятие у папки атрибута Read-Only меняет иконку без обновления. ОС — Microsoft Windows Professional SP3 RU.

Georgio 10-05-2013 06:56 2147452

Цитата:

Цитата Iska
В то же время задание/снятие у папки атрибута Read-Only меняет иконку без обновления. »

В моей Номе SP2 RU также.

Georgio 10-05-2013 10:04 2147495

Веталь_Забродский@fb, на этом примере показано как установить свою иконку на папку так, чтобы эта папка была переносимой на другой компьютер без потери отображения этой иконки.

Код:

@ECHO OFF
SET Icon_1=C:\Windows\surbey.ico
SET Folder=E:\17743124072517
XCOPY "%Icon_1%" "%Folder%" /H>nul
ECHO [.ShellClassInfo]>"%Folder%\desktop.ini"
FOR %%I IN ("%Icon_1%") DO ECHO IconFile=%%~nxI>>"%Folder%\desktop.ini"&&SET Icon_2=%Folder%\%%~nxI
1>>"%Folder%\desktop.ini" ECHO IconIndex=0
ATTRIB +R "%Folder%"
ATTRIB +H "%Icon_2%"
ATTRIB +H "%Folder%\desktop.ini"


Вместо ICO-файлов можно использовать BMP-файлы и другие файлы, содержащие значки. Использовать в этом варианте EXE-, DLL- и т. п. файлы нежелательно хотя бы потому, что зто громоздко. Лучше из них предварительно "вытащить" нужную иконку.

gora 11-05-2013 10:00 2147923

[решено] Как присвоить папке определенную иконку

Georgio 13-05-2013 22:00 2149543

Iska, если будет желание, проверьте на Windows XP Professional SP3 вот такое моё ноу-хау:


Пример.

Код:

@ECHO OFF
SET Icon=C:\Windows\surbey.ico
SET Folder=E:\41091167616556
IF EXIST "%Folder%\desktop.ini" ATTRIB -S -H "%Folder%\desktop.ini"
TYPE "%Icon%">"%Folder%\desktop.ini"
(
ECHO.
ECHO [.ShellClassInfo]
ECHO IconFile=desktop.ini
ECHO IconIndex=0
)>>"%Folder%\desktop.ini"
ATTRIB +R "%Folder%"



Файл "desktop.ini" становится одновременно и файлом, содержащим зкачок. На моей Windows XP Home SP2 этот "номер" проходит на "ура". На Windows 7, 8 это невозможно, т. к., очевидно, "ужесточились" правила обработки системой файлов "desktop.ini". Т. е., если "ранее" в его начале перед всеми секциями можно было вставить бинарное содержимое (и он сам становился бинарным) без ущерба для функциональности, то "теперь" это сделать нельзя. Хотелось бы узнать, с какой версии Windows это началось.

Iska 14-05-2013 08:13 2149702

Цитата:

Цитата Georgio
Iska, если будет желание, проверьте на Windows XP Professional SP3 вот такое моё ноу-хау: »

Проверил. Иконка меняется.

Georgio 14-05-2013 08:39 2149714

Iska, спасибо! Теперь очередь за "Longhorn" Windows Vista.


Время: 19:50.

Время: 19:50.
© OSzone.net 2001-