Страница 2 из 8

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

Добавлено: Ср окт 14, 2015 15:53
sa
Flasher писал(а):есть не только "не старше", но и
Даже "между" нет? И учёта атрибутов и/или размеров файлов?
Flasher писал(а):мельканий
Особо чувствительные к мельканиям могут сократить их вдвое за счёт создания пользовательской команды em_cd (с командой cd и параметром %A%Z) для вызова шаблона вместо применённой в кнопке внутренней команды 314. Вызов её будет таким:

Код: Выделить всё

tem(`em_cd >не старше 1 дня`)
вместо

Код: Выделить всё

tcm(314,1) eval(send_wait(`~(>не старше 1 дня){ENTER}`, findwnd(`TCOMBOINPUT`)))

Добавлено: Ср окт 14, 2015 16:02
Flasher
sa писал(а):Даже "между" нет? И учёта атрибутов и/или размеров файлов?
Про "между" не думал. Можно добавить, в принципе. А вот атрибуты и размеры - это совсем про другое, тут их нет смысла добавлять. Ты ещё поиск дубликатов и инфоплагины назови. :D
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
Есть такая вероятность.