Страница 2 из 8
Добавлено: Ср окт 14, 2015 12:57
Flasher
sa писал(а):Мне больше нравится идея ... посредством выделения (cm_SelectBoth – 3311) по шаблону
А мне нет. Пауза в моём случае не годится. А как там у других вообще неясно. Поэтому шаблон отпал. Плюс к этому в моём скрипте есть не только "не старше", но и "не младше", а также "менее", "более" и "совпадает", есть два типа даты, выбор того, что фильтровать. Настраивать кнопки гораздо удобней, плодить шаблоны не требуется, кнопки выходят куда компактнее. Ну и самое главное - никаких мельканий.

Добавлено: Ср окт 14, 2015 15:53
sa
Flasher писал(а):есть не только "не старше", но и
Даже "между" нет? И учёта атрибутов и/или размеров файлов?
Flasher писал(а):мельканий
Особо чувствительные к мельканиям могут сократить их вдвое за счёт создания пользовательской команды
em_cd (с командой cd и параметром %A%Z) для вызова шаблона вместо применённой в кнопке внутренней команды 314. Вызов её будет таким:
вместо
Код: Выделить всё
tcm(314,1) eval(send_wait(`~(>не старше 1 дня){ENTER}`, findwnd(`TCOMBOINPUT`)))
Добавлено: Ср окт 14, 2015 16:02
Flasher
sa писал(а):Даже "между" нет? И учёта атрибутов и/или размеров файлов?
Про "между" не думал. Можно добавить, в принципе. А вот атрибуты и размеры - это совсем про другое, тут их нет смысла добавлять. Ты ещё поиск дубликатов и инфоплагины назови.
sa писал(а):Особо чувствительные к мельканиям могут сократить их вдвое
Ой, оно там у тебя ещё и двойное.

Добавлено: Ср окт 14, 2015 16:30
sa
Flasher писал(а):инфоплагины назови
Лень было всё перечислять.
Flasher писал(а):это совсем про другое
А вот при выделении по шаблону, а не через буфер обмена, проблем с совсем другим не возникнет.
Добавлено: Ср окт 14, 2015 16:33
Flasher
sa писал(а):А вот при выделении по шаблону, а не через буфер обмена, проблем с совсем другим не возникнет.
С чем - с другим? Главное, что скрипт отрабатывает без сбоев.
Добавлено: Ср окт 14, 2015 16:46
sa
Flasher писал(а):А вот атрибуты и размеры - это совсем про другое
Flasher писал(а):С чем - с другим?
С атрибутами, например или полями инфоплагинов, бесчисленное множество которых ты же не засунешь в свой скрипт.
Добавлено: Ср окт 14, 2015 17:00
Flasher
Так я как раз против этого. Разговор не про все шаблоны, а те, которые касаются общего фильтра по дате модицикации. Не сомневаюсь, что комбинации с плагинами и атрибутами в таких подсветках или фильтрах - это редчайшие в плане реального применения случаи.
Добавлено: Ср окт 14, 2015 17:05
sa
Flasher писал(а):Разговор не про все шаблоны,
Я про то же: с твоим скриптом не про все, а с выделением по шаблону и показом выделенного – про все.
Добавлено: Ср окт 14, 2015 17:19
Flasher
Совсем не про то же (
общий фильтр). Мой скрипт у меня хотя бы работает. А твоя кнопка - нет.
Об остальном я уже высказался. Заявленная тема решена мной в расширенных рамках без необходимости тратить время на манипуляции с созданием шаблонов. Нужды подвязывать другие опции, как уже объяснено, не было и нет.
А что касается "между", то в целях соответствия уж точно если и добавлять, то не между датами, как в ТС, а между числами.
[cut="С учётом несущественного влияния на скорость выкладываю отдельно."]
Код: Выделить всё
'•••••••••••••••••••••••••••••••••••••• VBS ••••••••••••••••••••••••••••••••••••••
' Назначение: Фильтрация в активной панели файлов и/или папок по диапазону между
' заданным и текущим значениями единицы времени, между двумя заданными значениями
'
' Условия: путь запуска - пустой
' необходим компонент Script Helper ActiveX for TC
'
' Параметры: <тип элементов> <тип даты> <единица времени> <знак сравнения> <число>
' Добавочные параметры: (6, 7): <знак сравнения> <число>
'
' Тип элементов принимает следующие значения:
' 1 - только папки
' 2 - только файлы
' 3 - папки и файлы
'
' Тип даты принимает следующие значения:
' 1 - дата создания
' 2 - дата модификации
'
' Единица времени принимает следующие значения:
' s - секунда
' n - минута
' h - час
' d - сутки/день
' ww - неделя
' m - месяц
' q - квартал
' yyyy - год
' (не равно)
' Знак сравнения принимает следующие значения: = | <> | < | <= | >= | >
'
' Примечание:
' Связка параметров 6 и 7 аналогична связке 4 и 5. Их применение актуально для
' формирования диапазона между установленными значениями. См. ниже 3-й пример.
'
' Примеры параметров: 3 1 n <= 5 | 2 2 d < 2 | 1 1 m >= 1 <= 3
' Дипазон фильтрации в последнем примере: не менее одного и не более трёх месяцев
'
' Автор: Flasher ©
'•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Option Explicit
Dim C, Etype, DType, UTime, Comp1, Comp2, Count, Count2, DNow, Dir, F, S, Color, T
With WScript.Arguments
C = .Count : If C < 5 Then MsgBox "Должно быть указано не менее 5-ти " & _
"параметров!", 48, " Фильтрация по временному диапазону" : WSCript.Quit
EType = .Item(0) : DType = .Item(1) : UTime = .Item(2) : Comp1 = .Item(3)
Count = .Item(4) : If C > 5 Then Comp2 = .Item(5) : Count2 = .Item(6)
End With : DNow = Now
Set Dir = CreateObject("Scripting.FileSystemObject")._
GetFolder(CreateObject("Wscript.Shell").CurrentDirectory)
If EType <> 2 Then
For Each F in Dir.SubFolders
If Test(F) Then S = S & F & "\" & vbNewLine
Next
End If
If EType > 1 Then
For Each F in Dir.Files
If Test(F) Then S = S & F & vbNewLine
Next
End If
With CreateObject("TCScript.Helper")
.Pause = 0
If IsEmpty(S) Then
Color = .INIRead(.MainINI, "Colors", "BackColor", "-1")
If Color = "-1" Then Color = 16777215
CreateObject("Internet.HHCtrl").TextPopup "Нет соответствий фильтру!",_
"Verdana,10", 20, 10, Abs(.INIRead(.MainINI,"Colors","ForeColor","-1")), Color
WScript.Sleep 2000
Else
.Wait = True : .LockTC True : T = .GetTextFromClip
.SetTextToClip(S) : .SendCommand 2033, True : .SendCommand 2023, True
.SendCommand 524, True : .LockTC False : .SetTextToClip(T)
End If
End With
Function Test(Item)
Dim D, Cnt
If DType = 1 Then D = Item.DateCreated Else D = Item.DateLastModified
Cnt = DateDiff(UTime, 0, DNow - D) : Test = Eval(Cnt & Comp1 & Count)
If C > 5 Then Test = Test And Eval(Cnt & Comp2 & Count2)
End Function
[/cut]Плюс сюда добавил нераздражающее всплывающее окошко под курсором в случае отсутствия фильтрации.
Добавлено: Ср окт 14, 2015 18:40
sa
Flasher писал(а):А твоя кнопка - нет.
Спасибо за тестирование.

Остаётся предложить заинтересованным воспользоваться твоим кодом для TCFS2, благо основная идея в обоих вариантах одинаковая - выделение по шаблону.
Добавлено: Ср окт 14, 2015 18:43
Flasher
sa писал(а):Спасибо за тестирование.

Своевременно.>>
Flasher писал(а):Пауза в моём случае не годится.
Добавлено: Ср окт 14, 2015 19:01
sa
Flasher писал(а):Своевременно
Я полагал, что это ты о своей команде (для TCFS2) тогда писал: она у меня обрабатывает панель почему-то за несколько секунд. А что за пауза в моей кнопке? Я так понял, она же совсем не пашет у тебя.
Добавлено: Ср окт 14, 2015 19:07
Flasher
sa писал(а):она у меня отрабатывает почему-то секунд за 5
Странно. У меня сразу.
sa писал(а):А что за пауза в моей кнопке?
Задержка delay(200).
Добавлено: Ср окт 14, 2015 19:14
sa
Flasher писал(а):работает. А твоя кнопка - нет.
Тогда это о чём, о паузе в 200*2 миллисекунд для завершения диалога и фильтрации (выделения)?
Добавлено: Ср окт 14, 2015 19:16
Flasher
Есть такая вероятность.