'•••••••••••••••••••••••••••••••••••••• 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 |