Войти

Показать полную графическую версию : [решено] Смена значка папки из командной строки


Веталь_Забродский@fb
09-05-2013, 11:48
можно ли через командную строку поменять иконку(значок) папке?
и как это сделать?

Iska
09-05-2013, 12:35
@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 — Википедия (http://ru.wikipedia.org/wiki/Desktop.ini)
Отсюда (http://forum.oszone.net/post-1668332.html#post1668332) и ниже.

Веталь_Забродский@fb
09-05-2013, 13:09
объясни что каждая строчка означает плиз
зарание спасибо

Iska
09-05-2013, 14:30
Что именно не понятно?

Веталь_Забродский@fb
09-05-2013, 21:18
что означают с 2 по 9 строчку

Iska
09-05-2013, 22:01
Веталь_Забродский@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

echo /?
setlocal /?
set /?
Группировка команд скобками для группировки их вывода в файл.
attrib.exe /?
endlocal /?
exit /?

Georgio
09-05-2013, 22:24
Примечание.


attrib.exe +r "%sPath%" »

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


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

ATTRIB +S "%sPath%"

Так делают некоторые сторонние программы.

Iska
09-05-2013, 23:00
- для Windows XP не принципиально »
Принципиально.

Georgio
09-05-2013, 23:15
Для Windows XP проверял. Не принципиально. Возможна только задержка отображения до обновления папки или, в крайнем случае, до перезагрузки.

Iska
10-05-2013, 02:08
Для Windows XP проверял. Не принципиально. »
Georgio, описывайте, как проверяли. У меня после снятия с папки атрибута Read-Only — её пользовательская иконка меняется на стандартную.

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

Iska
10-05-2013, 06:42
Iska, попробуйте просто скопировать готовый файл desktop.ini из папки с нестандартным значком в другую папку без атрибутов R и/или S и обновить её. »
Скопировал. Обновил. Иконка у папки осталась стандартной.

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

Georgio
10-05-2013, 06:56
В то же время задание/снятие у папки атрибута Read-Only меняет иконку без обновления. »

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

Georgio
10-05-2013, 10:04
Веталь_Забродский@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
[решено] Как присвоить папке определенную иконку (http://forum.oszone.net/post-2103273.html#post2103273)

Georgio
13-05-2013, 22:00
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
Iska, если будет желание, проверьте на Windows XP Professional SP3 вот такое моё ноу-хау: »
Проверил. Иконка меняется.

Georgio
14-05-2013, 08:39
Iska, спасибо! Теперь очередь за "Longhorn" Windows Vista.




© OSzone.net 2001-2012