Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Как сделать чтобы фильтр "не старше 1 дня" влиял на папки? 
Author Message
Flasher



PostPosted: Tue Oct 13, 2015 20:51    Post subject: Reply with quote

Сбацал скрипт. Если не лень, проверьте кто-нибудь.

Code:
'•••••••••••••••••••••••••••••••••••••• VBS ••••••••••••••••••••••••••••••••••••••
' Назначение:  Фильтрация в активной панели файлов и/или папок по заданной разнице
'              единиц измерения времени их дат с текущей датой и временем

'    Условия:  путь запуска - пустой
'              необходим компонент Script Helper ActiveX for TC

' Параметры: <тип элементов> <тип даты> <единица времени> <знак сравнения> <число>

' Тип элементов принимает следующие значения:
'    1   -   только папки
'    2   -   только файлы
'    3   -   папки и файлы

' Тип даты принимает следующие значения:
'    1   -   дата создания
'    2   -   дата модификации

' Единица (измерения) времени принимает следующие значения:
'    s   -   секунда
'    n   -   минута
'    h   -   час
'    d   -   сутки/день
'   ww   -   неделя
'    m   -   месяц
'    q   -   квартал
' yyyy   -   год

' Знак сравнения принимает следующие значения:  =  |  <>  |  <  |  <=  |  >=  |  >

' Примеры параметров:  3 1 n <= 5  |  2 2 d < 2

' Автор: Flasher ©
'••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••

Option Explicit : Dim Etype, DType, UTime, Compr, Count, DNow, FSO, Dir, F, D, S, T
With WScript.Arguments
  If .Count <> 5 Then MsgBox "Должно быть указано 5 параметров!",_
  vbExclamation, Space(17) & "Фильтрация по дате" : WSCript.Quit
  EType = .Item(0) : DType = .Item(1) : UTime = .Item(2)
  Compr = .Item(3) : Count = .Item(4)
End With : DNow = Now
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dir = FSO.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
If Not IsEmpty(S) Then
  With CreateObject("TCScript.Helper")
    .Pause = 0 : .Wait = True : .LockTC True : T = .GetTextFromClip
    .SetTextToClip(S) : .SendCommand 2033, True : .SendCommand 2023, True
    .SendCommand 524, True : .LockTC False : .SetTextToClip(T)
  End With
End If

Function Test(Item)
  If DType = 1 Then D = Item.DateCreated Else D = Item.DateLastModified
  Test = Eval(DateDiff(UTime, 0, DNow - D) & Compr & Count)
End Function

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.


Last edited by Flasher on Tue Oct 13, 2015 23:24; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group