Страница 2 из 2
Добавлено: Пн дек 27, 2010 21:43
Avada
Flasher
Тут дело не в наводке Гислеру. По-моему, реализовать такое через внутренние ассоциации в принципе невозможно.
Добавлено: Пн дек 27, 2010 22:04
Flasher
Avada писал(а):По-моему, реализовать такое через внутренние ассоциации в принципе невозможно.
Об этом судить должен автор, как мне кажется.

Добавлено: Пн дек 27, 2010 22:06
Tol!k
DeathStalker писал(а):этот вариант тоже имеет право на жизнь
Согласен.
Если папки/файлы редко меняются — пройтись скриптом, который рассуёт соответствующие desktop.ini и .ico
Добавлено: Пн дек 27, 2010 23:00
Avada
Flasher
Желающие могут попытаться зарепортить. С интересом понаблюдаю за результатом, но сам по-прежнему полагаю, что реализация запрошенной фичи невозможна (хотя открывать здесь развёрнутую дискуссию с приведением аргументов не буду).
Добавлено: Вт дек 28, 2010 10:04
Batya
Tol!k писал(а):Если папки/файлы редко меняются — пройтись скриптом, который рассуёт соответствующие desktop.ini и .ico
Можно с использованием Script Content Plugin создать шаблон раскраски (без раскраски как таковой) и менять иконки скриптом, запускаемым плагином.
Даже уже есть
рыба. Только пока совершенно нет времени

Добавлено: Вт дек 28, 2010 18:07
Fulkabaster
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.
Я этот метод обдумывал. Если правильно понимаю, он не должен тормозить систему так, как плагин FileMask.
Причем файл можно редактироваь не вручную, а менять иконку через свойства папки, этот файл автоматом подкорректируется. Но беда в том, что такой фокус не удается сделать массово над всеми выделенными папками. А по одной папке так менять, если их сотни - не дело.
Есть еще выход - с помощью TC скопировать нужным образом измененный файл Desktop.ini во все заданные папки, но я не разобрался как это сделать. Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во
все подкаталоги открытого в правой панели каталога?
Добавлено: Вт дек 28, 2010 18:42
Batya
Fulkabaster писал(а):Т.е. вопрос свелся к такому: как можно скопировать заданный в левой панели файл во все подкаталоги открытого в правой панели каталога?
Указанный ранее
скрит нужно запустить с параметрами:
Логика работы:
Во всех выделенных каталогах
активной панели будет
создан файл desktop.ini. При этом в качестве файла иконок будет использован текущий файл на
пассивной панели.
Добавлено: Вт дек 28, 2010 18:50
Fulkabaster
Нет, а если вообще, имея ввиду более общую задачу? Наверняка TC позволяет своими средствами скопировать один и тот же файл сразу во множество каталогов?
Добавлено: Вт дек 28, 2010 19:09
Avada
Fulkabaster
Позволяет. Стандартный функционал, введённый в TC 7.50 и улучшенный в 7.55 и 7.56. Поиск по форуму по словам
Копировать во все выделенные, рекомендую задать показ результатов как сообщений. Или сразу
сюда.
Добавлено: Ср дек 29, 2010 23:56
Andrey_A
Идея показалась интересной, написал скрипт, возможно решит проблему
Код: Выделить всё
'======================================================================
' Присвоение значков выделенным Папкам по содержимому
' Ассоциированные значкам папки и расширения считываются из файла
' Синаксис файла:
' Путь\к\значку{библиотека,номер}=;Папка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
т.к. тестировал скрипт недолго, возможны недочёты, кто обнаружит сообщите
Добавлено: Чт дек 30, 2010 01:28
Tol!k
Код: Выделить всё
@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
Простенько. Запустить в корневой папке.
Добавлено: Пт дек 31, 2010 09:31
Fulkabaster
Как запускать-то их? Мне больше как-то приходилось такие вещи в линухе делать %)
Добавлено: Пт дек 31, 2010 11:37
Tol!k
Как использовать Script-ы?
*Код, начинающийся с
@echo off, сохранять с расширением .cmd
**Ещё встречаются скрипты AHK и AutoIt, но реже.
Добавлено: Пт дек 31, 2010 13:02
Fulkabaster
Спасибо.