Иконка каталога в зависимости от содержимого
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Об этом судить должен автор, как мне кажется.Avada писал(а):По-моему, реализовать такое через внутренние ассоциации в принципе невозможно.
Последний раз редактировалось Flasher Пн дек 27, 2010 22:40, всего редактировалось 1 раз.
Можно с использованием Script Content Plugin создать шаблон раскраски (без раскраски как таковой) и менять иконки скриптом, запускаемым плагином.Tol!k писал(а):Если папки/файлы редко меняются — пройтись скриптом, который рассуёт соответствующие desktop.ini и .ico
Даже уже есть рыба. Только пока совершенно нет времени
Нет, я не сплю. Я просто медленно моргаю.
-
Fulkabaster
- Сообщения: 16
- Зарегистрирован: Вс дек 26, 2010 12:16
Я этот метод обдумывал. Если правильно понимаю, он не должен тормозить систему так, как плагин FileMask.DeathStalker писал(а):Те же действия можно сделать вручную разместив в необходимых папках файлы desktop.ini
Например код в файле desktop.ini папки dropbox:Код: Выделить всё
[.ShellClassInfo] IconFile=C:\Documents and Settings\martinenko\Application Data\Dropbox\bin\Dropbox.exe IconIndex=-1001 InfoTip=A securely backed up place to put your important files.
Причем файл можно редактироваь не вручную, а менять иконку через свойства папки, этот файл автоматом подкорректируется. Но беда в том, что такой фокус не удается сделать массово над всеми выделенными папками. А по одной папке так менять, если их сотни - не дело.
Есть еще выход - с помощью TC скопировать нужным образом измененный файл Desktop.ini во все заданные папки, но я не разобрался как это сделать. Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во все подкаталоги открытого в правой панели каталога?
Указанный ранее скрит нужно запустить с параметрами:Fulkabaster писал(а):Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во все подкаталоги открытого в правой панели каталога?
Код: Выделить всё
%L %T%M 0Во всех выделенных каталогах активной панели будет создан файл desktop.ini. При этом в качестве файла иконок будет использован текущий файл на пассивной панели.
Нет, я не сплю. Я просто медленно моргаю.
-
Fulkabaster
- Сообщения: 16
- Зарегистрирован: Вс дек 26, 2010 12:16
Fulkabaster
Позволяет. Стандартный функционал, введённый в TC 7.50 и улучшенный в 7.55 и 7.56. Поиск по форуму по словам Копировать во все выделенные, рекомендую задать показ результатов как сообщений. Или сразу сюда.
Позволяет. Стандартный функционал, введённый в TC 7.50 и улучшенный в 7.55 и 7.56. Поиск по форуму по словам Копировать во все выделенные, рекомендую задать показ результатов как сообщений. Или сразу сюда.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
Идея показалась интересной, написал скрипт, возможно решит проблему
Необходимо составить свой файл, где будут прописаны значки и ассоциированные им папки пример:
кнопка на панели тотала:
т.к. тестировал скрипт недолго, возможны недочёты, кто обнаружит сообщите
Код: Выделить всё
'======================================================================
' Присвоение значков выделенным Папкам по содержимому
' Ассоциированные значкам папки и расширения считываются из файла
' Синаксис файла:
' Путь\к\значку{библиотека,номер}=;Папка1;Папка2;расширение1;расширение2;...
' d:\Картинки\Иконки\Архив.ico=;Архивы;Архив;7z;7zip;rar;
' %SystemRoot%\system32\shell32.dll,-236=;Музыка;mp3;wal;
' %COMMANDER_PATH%\Wcmicons.icl,1854=;Текст;Документы;doc;docx;txt;
' %WINDIR%\Wcmicons.dll,1457=;TC Image;Total Commander;
'======================== Параметры ===================================
' В параметрах вызова из TC должно быть прописанo 2параметра:
' {Cписок файлов} {путь\к\файлу_ассоциаций}
'======================== Примеры ===================================
' %L "%%COMMANDER_PATH%%\Scripts\AddIcons\IconsOnAssFolders.txt"
'
' Автор: Аверин Андрей (30.12.2010)
' Версия: 1.0
'======================================================================
Option Explicit
Dim FSO, WSH, List, ExtLine, Name, Ext, Files, i, k, FF, IC, NN
Set FSO = CreateObject("Scripting.FileSystemObject")
If WScript.Arguments.Count < 2 Then
MsgBox "Не хватает параметров!" & vbNewLine &_
"Должно быть минимум Два параметра!" & vbNewLine &_
"%L ""Путь\к\IconsOnAssFolers.txt""" & vbNewLine &_
"A у Вас прописан(о) " & WScript.Arguments.Count & " !!! " , vbOKOnly &_
vbCritical, "Присвоение значков Папкам по содержимому"
Wscript.Quit
End if
Set List = FSO.OpenTextFile(GetPath(WScript.Arguments(0)), 1)
ExtLine = Split(FSO.OpenTextFile(GetPath(WScript.Arguments(1)), 1).ReadAll, vbNewLine)
Do While Not List.AtEndOfStream
FF = GetPath(List.ReadLine)
if Len(FSO.GetExtensionName(FF)) = 0 Then
Name = FSO.GetBaseName(FF)
Ext = Split(";" & Name & ";" & ExtStr(FF), ";")
For i = 0 To Ubound(Ext)
For k = 0 To Ubound(ExtLine)
if InStr(1,UCase(Mid(ExtLine(k), Instr(ExtLine(k), "=") + 1, Len(ExtLine(k)))), ";" & UCase(Ext(i)) & ";") > 0 Then
If Right(FF, 1) <> "\" Then FF = FF & "\"
IC = GetPath(Mid(ExtLine(k), 1, Instr(ExtLine(k), "=") - 1))
if Instr(IC, ",") > 0 Then
IC = GetPath(Mid(ExtLine(k), 1, Instr(ExtLine(k), ",") - 1))
NN = Mid(ExtLine(k), Instr(ExtLine(k), ",") + 1, Instr(ExtLine(k), "=") - Instr(ExtLine(k), ",") - 1)
else
NN = "0"
end if
Desktop FF,IC, NN
i = Ubound(Ext)
k = Ubound(ExtLine)
end if
Next
Next
end if
Loop
List.Close
Set List = Nothing
Set FSO = Nothing
Wscript.Quit
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(pPath))
End Function
Function ExtStr(FFolder)
Dim Folder
Set Folder = FSO.GetFolder(FFolder)
For Each Files In Folder.Files
Ext = FSO.GetExtensionName(Files)
if Instr(UCase(ExtStr), UCase(Ext)) < 1 Then
ExtStr = ExtStr & Ext & ";"
end if
Next
End Function
Function Desktop(TargetDir,IconFile, Number)
Dim oFile, oDir, Attr, Des
Des = "Desktop.ini"
If FSO.FileExists(TargetDir & Des) Then FSO.DeleteFile (TargetDir & Des)
'Создаём Desktop.ini
If not FSO.FileExists(TargetDir & Des) Then
Set oFile = FSO.CreateTextFile(TargetDir & Des)
oFile.WriteLine "[.ShellClassInfo]"
oFile.WriteLine "IconFile=" & IconFile
oFile.WriteLine "IconIndex=" & Number
oFile.WriteLine "IconResource=" & IconFile & "," & Number
oFile.Close
' Установливаем для файла атрибутов "Скрытый", "Системный", "Архивный"
Attr = 38
Set oFile = FSO.GetFile(TargetDir & Des)
oFile.Attributes = oFile.Attributes or Attr
End If
' Установливаем для папки атрибут "Только чтение"
Attr = 1
Set oDir = FSO.GetFolder(TargetDir)
oDir.Attributes = oDir.Attributes or Attr
End FunctionКод: Выделить всё
d:\Картинки\Иконки\Архив.ico=;Архивы;Архив;7z;7zip;rar;
%SystemRoot%\system32\shell32.dll,-236=;Музыка;mp3;wal;
%COMMANDER_PATH%\Wcmicons.icl,1854=;Текст;Документы;doc;docx;txt;
%WINDIR%\Wcmicons.dll,1457=;TC Image;Total Commander;
D:\Картинки\Иконки\Vista My\Текст 004.ico,0=;Книги;djv;djvu;fb2;pdf;Код: Выделить всё
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Scripts\AddIcons\IconsOnAssFolders.vbs"
%L "%%COMMANDER_PATH%%\Scripts\AddIcons\IconsOnAssFolders.txt"
C:\Windows\System32\WScript.exe
IconsOnAssFolers
-1
Код: Выделить всё
@echo off &chcp 1251 >nul
setlocal enableextensions
for /r %%d in (*.flac *.ape *.wv) do call :d "%%~dpd" 40
for /r %%d in (*.mp3 *.ogg *.wma *.aac *.m4a) do call :d "%%~dpd" 168
for /r %%d in (*.mid *.mod *.it) do call :d "%%~dpd" 116
for /r %%d in (*.djvu *.fb2 *.pdf) do call :d "%%~dpd" 114
for /r %%d in (*.jpg *.tif *.png) do call :d "%%~dpd" 117
goto :eof
:d
if exist "%~1Desktop.ini" goto :eof
echo [.ShellClassInfo]> "%~1Desktop.ini"
echo IconFile=%%SystemRoot%%\system32\shell32.dll>> "%~1Desktop.ini"
echo IconIndex=%2>> "%~1Desktop.ini"
attrib +h +s "%~1Desktop.ini"
attrib +r "%~1."
goto :eof
-
Fulkabaster
- Сообщения: 16
- Зарегистрирован: Вс дек 26, 2010 12:16
Как использовать Script-ы?
*Код, начинающийся с @echo off, сохранять с расширением .cmd
**Ещё встречаются скрипты AHK и AutoIt, но реже.
*Код, начинающийся с @echo off, сохранять с расширением .cmd
**Ещё встречаются скрипты AHK и AutoIt, но реже.