Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Иконка каталога в зависимости от содержимого
Goto page Previous  1, 2
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Avada



Joined: 01 Aug 2008
Posts: 10420
Location: Россия, Саратов

Post (Separately) Posted: Mon Dec 27, 2010 22:43    Post subject: Reply with quote

Flasher
Тут дело не в наводке Гислеру. По-моему, реализовать такое через внутренние ассоциации в принципе невозможно.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Dec 27, 2010 23:04    Post subject: Reply with quote

Avada wrote:
По-моему, реализовать такое через внутренние ассоциации в принципе невозможно.
Об этом судить должен автор, как мне кажется. Wink

Last edited by Flasher on Mon Dec 27, 2010 23:40; edited 1 time in total
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Mon Dec 27, 2010 23:06    Post subject: Reply with quote

DeathStalker wrote:
этот вариант тоже имеет право на жизнь
Согласен.
Если папки/файлы редко меняются — пройтись скриптом, который рассуёт соответствующие desktop.ini и .ico
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10420
Location: Россия, Саратов

Post (Separately) Posted: Tue Dec 28, 2010 00:00    Post subject: Reply with quote

Flasher
Желающие могут попытаться зарепортить. С интересом понаблюдаю за результатом, но сам по-прежнему полагаю, что реализация запрошенной фичи невозможна (хотя открывать здесь развёрнутую дискуссию с приведением аргументов не буду).
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2227
Location: Москва, Россия

Post (Separately) Posted: Tue Dec 28, 2010 11:04    Post subject: Reply with quote

Tol!k wrote:
Если папки/файлы редко меняются — пройтись скриптом, который рассуёт соответствующие desktop.ini и .ico

Можно с использованием Script Content Plugin создать шаблон раскраски (без раскраски как таковой) и менять иконки скриптом, запускаемым плагином.
Даже уже есть рыба. Только пока совершенно нет времени Sad
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Fulkabaster



Joined: 26 Dec 2010
Posts: 16

Post (Separately) Posted: Tue Dec 28, 2010 19:07    Post subject: Reply with quote

DeathStalker wrote:
Те же действия можно сделать вручную разместив в необходимых папках файлы desktop.ini
Например код в файле desktop.ini папки dropbox:
Code:
[.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.

Я этот метод обдумывал. Если правильно понимаю, он не должен тормозить систему так, как плагин FileMask.
Причем файл можно редактироваь не вручную, а менять иконку через свойства папки, этот файл автоматом подкорректируется. Но беда в том, что такой фокус не удается сделать массово над всеми выделенными папками. А по одной папке так менять, если их сотни - не дело.
Есть еще выход - с помощью TC скопировать нужным образом измененный файл Desktop.ini во все заданные папки, но я не разобрался как это сделать. Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во все подкаталоги открытого в правой панели каталога?
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2227
Location: Москва, Россия

Post (Separately) Posted: Tue Dec 28, 2010 19:42    Post subject: Reply with quote

Fulkabaster wrote:
Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во все подкаталоги открытого в правой панели каталога?

Указанный ранее скрит нужно запустить с параметрами:
Code:
%L %T%M 0

Логика работы:
Во всех выделенных каталогах активной панели будет создан файл desktop.ini. При этом в качестве файла иконок будет использован текущий файл на пассивной панели.
_________________
Нет, я не сплю. Я просто медленно моргаю.
Back to top
View user's profile Send private message
Fulkabaster



Joined: 26 Dec 2010
Posts: 16

Post (Separately) Posted: Tue Dec 28, 2010 19:50    Post subject: Reply with quote

Нет, а если вообще, имея ввиду более общую задачу? Наверняка TC позволяет своими средствами скопировать один и тот же файл сразу во множество каталогов?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10420
Location: Россия, Саратов

Post (Separately) Posted: Tue Dec 28, 2010 20:09    Post subject: Reply with quote

Fulkabaster
Позволяет. Стандартный функционал, введённый в TC 7.50 и улучшенный в 7.55 и 7.56. Поиск по форуму по словам Копировать во все выделенные, рекомендую задать показ результатов как сообщений. Или сразу сюда.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Andrey_A



Joined: 10 Apr 2009
Posts: 394
Location: Сочи

Post (Separately) Posted: Thu Dec 30, 2010 00:56    Post subject: Reply with quote

Идея показалась интересной, написал скрипт, возможно решит проблему
Code:
'======================================================================
' Присвоение значков выделенным Папкам по содержимому
' Ассоциированные значкам папки и расширения считываются из файла
' Синаксис файла:
' Путь\к\значку{библиотека,номер}=;Папка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

Необходимо составить свой файл, где будут прописаны значки и ассоциированные им папки пример:
Code:
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;

кнопка на панели тотала:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\Scripts\AddIcons\IconsOnAssFolders.vbs"
%L "%%COMMANDER_PATH%%\Scripts\AddIcons\IconsOnAssFolders.txt"
C:\Windows\System32\WScript.exe
IconsOnAssFolers


-1

т.к. тестировал скрипт недолго, возможны недочёты, кто обнаружит сообщите
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Thu Dec 30, 2010 02:28    Post subject: Reply with quote

Code:
@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

Простенько. Запустить в корневой папке.
Back to top
View user's profile Send private message
Fulkabaster



Joined: 26 Dec 2010
Posts: 16

Post (Separately) Posted: Fri Dec 31, 2010 10:31    Post subject: Reply with quote

Как запускать-то их? Мне больше как-то приходилось такие вещи в линухе делать %)
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Fri Dec 31, 2010 12:37    Post subject: Reply with quote

Как использовать Script-ы?
*Код, начинающийся с @echo off, сохранять с расширением .cmd
**Ещё встречаются скрипты AHK и AutoIt, но реже.
Back to top
View user's profile Send private message
Fulkabaster



Joined: 26 Dec 2010
Posts: 16

Post (Separately) Posted: Fri Dec 31, 2010 14:02    Post subject: Reply with quote

Спасибо.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group