Страница 2 из 5
Добавлено: Вс май 24, 2015 18:08
Flasher
KatMuse
Файл красится заданием в поисковой строке шаблона полного пути к нему.
С папками уже другая история. Можно красить их аналогично (только с точкой на конце вместо бэкслеша и атрибутом "Каталог"), заведомо зная, что там файл, либо с помощью SCP и рекурсии.
Но последний вариант будет вреден для ТС, т.к. скрипт будет постоянно срабатывать при каждом переходе в другой каталог и без задания соответствия по маске поиск может производиться по всем подпапкам, что чревато общими глюками. Поэтому лучше точно знать, что в пути могут встречаться соответствующие фильтру имена.
Всё это справедливо и для пользовательских подсказок.
Добавлено: Вс май 24, 2015 22:05
KatMuse
Flasher, я прошу прощения, но... я не знаю как реализовать то, что Вы говорите... извинет, но не могли бы объяснить подробнее, пожалуйста...
Добавлено: Вс май 24, 2015 22:20
Flasher
KatMuse
Что именно реализовать?
Стандартное раскрашивание, вспл. подсказки или что?
Добавлено: Пн май 25, 2015 03:06
KatMuse
Как видеть через каталог, то есть, есть файл на уровне вложенности, например, через 2 каталога, а как на верхнем уровне это засечь?
Добавлено: Пн май 25, 2015 03:34
Flasher
Для этого нужен скрипт для
SCP. Про умолченные условия писал выше.
Добавлено: Пн май 25, 2015 18:46
KatMuse
Flasher писал(а):Для этого нужен скрипт для
SCP. Про умолченные условия писал выше.
Flasher, а такой скрипт существует? Поискал по форуму - есть только скрипт от Batya, но там немножко функционала не хвататет - красятся не все каталоги.
Добавлено: Пн май 25, 2015 18:50
Flasher
Нет, не существует. Но чтобы его написать, я и пишу про указание неотражённых условий.
Добавлено: Пн май 25, 2015 20:01
KatMuse
Flasher, спасибо за ответ - теперь стало поянтнее!
Идея такая: есть файл или папка на которые мы где сослались. В комментарии по Ctrl + Z пишем "Есть сслыка". Необходимо раскрасить каталоги верхнего уровня, которые находятся по пути к файлу или папке.
Общая задача такая, возможно я что-то путано изложил или не понял вопроса - прошу прощения.
Добавлено: Пн май 25, 2015 20:15
Flasher
То, о чём я писал, не касается комментариев. "У нас с Вами, идея одинаковая" как-то не стыкуется с возвращением к Ctrl+Z.
Ещё раз см.
пост, начиная с "Но".
Добавлено: Пн май 25, 2015 20:22
KatMuse
Можно красить их аналогично (только с точкой на конце вместо бэкслеша и атрибутом "Каталог"), заведомо зная, что там файл, либо с помощью SCP и рекурсии.
Если SCP вредно, то получается, что остаётся только Ctrl + Z. Просто я знаю один способ (и предполагаю его). Когда в настройка создаём шаблон поиска в комментарии к файлу, а потом в настройках Цвет указываем этот шаблон. Вы не об это говорили?
Добавлено: Пн май 25, 2015 20:53
Flasher
KatMuse писал(а):Если SCP вредно
Вредно для полной рекурсии, а не для фильтра имён подкаталогов. Вот это и не было до сих пор отражено.
KatMuse писал(а):Вы не об это говорили?
Нет. См. внимательно: "заведомо зная, что там файл". Т.е. назначать цвет и подсказку конкретным папкам, в структуре которых расположен нужный файл.
Не понимаю, зачем в данном случае лишние движения с созданием и обзором комментария.
Добавлено: Вт май 26, 2015 23:04
KatMuse
Дело в том, что у файла не фиксированное имя и у папок же тоже, поэтому я, в меру своих знаний, думал, что тогда нужно или в поток комментарий или по Ctrl + Z, а получается, что лучше, чтобы в папке был файл с определённым именем, а к имени файла добавлять префикс, правильно? Так лучше метить файлы и папки?
Добавлено: Вт май 26, 2015 23:40
Flasher
Фильтр подразумевает маску, т.е. имя не фиксированное, но имеет определённые символы в именах (*fol*nam*).
Можно - да, переименовывать вышестоящие каталоги по совпадающему критерию (префикс, постфикс, середина - неважно). С пом. поиска и ИГП это делается в два счёта.
А вот зачем файл именовать? И у него имя нигде не имеет идентичных вхождений?

Тогда задача изначально была абсурдна.
Добавлено: Ср май 27, 2015 11:22
KatMuse
Flasher, спасибо за разъяснение!
Дело в том, что мы же заранее не знаем - может быть на каталог верхнего уровня тоже будет ссылка позже, поэтому лучше имена не изменять вообще. А красить файл в зависимости от комментария. Комментария как раз позволяет не делать вообще никаких движений с именами.
Если в комментарии есть строка, например "---->", то значит глубже есть ссылка и в настройках "Цвет" указываем, что её нужно красить зелёным.
Если строка, например, "Есть ссылка: ", то красим в красный, заначит имеено на эту папку или этот файл есть ссылка.
Вот есть файл:
E:\Фото\Лето - 2015\IMG_2015.07.01.jpg
Запускаем скрипт он добавляет комментарий к файлу "IMG_2015.07.01.jpg" появляется поле ввода, в котором мы пишем где ссылка (в записной книже OneNote или EverNote, например) получаем комментарий "Есть ссылка: _из_поля_ввода_". Потом скрипт добавляет комментарий "---->" к папкам "Лето - 2015" и "Фото". TC красит файл и папки соответственно и мы видим, что вот зелёное, значит идём глубже, ага вот красное, смотрим где мы сделали ссылку.
Если будет одновременно и "---->", и "Есть ссылка: _из_поля_ввода_", то тогда получается, что "Есть ссылка: _из_поля_ввода_" нужно дописывать в начало, а "---->" в конец и раскрашивать такую конструкцию коричневым, например, но это уже будет делать TC, а нам желательно добавить соответствующие комментарии.
Добавлено: Чт май 28, 2015 05:49
Flasher
Тогда всё утыкается в то, что верхние папки могут быть одинаковыми для разных файлов, и какому комментарию в этом случае в момент создания отдавать приоритет - неизвестно.
Если перезапись не пугает, то:
Код: Выделить всё
'===============================================================================
' Добавить/перезаписать комментарий к файлу под курсором и вышестоящим каталогам
' Параметр: %V "<комментарий (необяз.)>" Автор: Flasher ©
'===============================================================================
Option Explicit : Dim Arg, File, Com, Header, ChS, FSO, H,_
TCIni, Filt, Enc, Key, FCom1, FCom2, N, Path, F1, F2, PPath
Set Arg = WScript.Arguments : File = Arg(0) : If Arg.Count = 2 Then Com = Arg(1)
Header = "Добавление комментария к файлу и всем род. папкам"
If Com = "" Then Com = InputBox(String(5, vbCr) & "Введите комментарий:", Header)
If Trim(Com) = "" Then WScript.Quit :End If: ChS = Array("windows-1251", "cp866")
Set FSO = CreateObject("Scripting.FileSystemObject")
TCIni = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%COMMANDER_INI%")
Filt = Filter(Split(FSO.OpenTextFile(TCIni).ReadAll, vbnewline), "CopyComments=")
Enc = ChS(0) : Key = 2 : If Ubound(Filt) = 0 Then Key = Mid(Filt(0), 14)
If Key/2 = Int(Key/2) Then FCom1 = "descript.ion" : FCom2 = "files.bbs"_
Else FCom1 = "files.bbs" : FCom2 = "descript.ion" : Enc = ChS(1) : H = 2
For Each N in Split(File, "\")
Path = FSO.BuildPath(Path, N) & "\"
If Not IsEmpty(PPath) Then
F1 = PPath & FCom1 : F2 = PPath & FCom2
If FSO.FileExists(F1) Then
AddComment F1, N, 0
ElseIf FSO.FileExists(F2) Then AddComment F2, N, 1
Else
If FCom1 = "files.bbs" Then
N = UCase(N)
ElseIf InStr(N, " ") Then N = """" & N & """" End If
With CreateObject("ADODB.Stream")
.Open : .Charset = Enc : .WriteText N & " " & Com & vbNewLine
.SaveToFile F1, 2 : .Close
End With : FSO.GetFile(F1).Attributes = 34 - H
End If
End If : PPath = Path
Next
Sub AddComment(F, FN, Test)
Dim Fl, Name, All, Find, T, NL
If Test Then
Select Case Enc : Case ChS(0) Enc = ChS(1)
Case ChS(1) Enc = ChS(0) End Select
End If : Set Fl = FSO.GetFile(F) : Fl.Attributes = 32 : Name = Fl.Name
If Name = "descript.ion" And InStr(FN, " ") Then FN = """" & FN & """"
If Name = "files.bbs" Then FN = UCase(FN)
With CreateObject("ADODB.Stream")
.Mode = 3 : .Charset = Enc : .Open
.LoadFromFile F : All = .ReadText : Find = InStr(All, FN & " ")
If Find > 1 Then Find = InStr(All, vbLf & FN & " ") : T = 1
NL = 0 : If Right(All, 1) <> vbLf Then NL = 1
If Find Then
.Position = Find + Len(FN) + T : All = Mid(All, Find)
.SetEOS : .WriteText Com & Mid(All, InStr(All, vbNewLine))
Else .Position = Len(All) : .WriteText FN & " " & Com & vbNewLine, NL
End If : .SaveToFile F, 2 : .Close
End With : If Name = "descript.ion" Then Fl.Attributes = 34
End Sub
ЗЫ: Сообщения:
8888 - движение в бесконечность.
