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 

Выделение всех файлов с той же датой что и файл под курсором
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Bomm



Joined: 15 Jan 2005
Posts: 245
Location: Москва

Post (Separately) Posted: Mon Jul 09, 2007 16:34    Post subject: Выделение всех файлов с той же датой что и файл под курсором Reply with quote

Вопрос к скриптописателям:
Какой скрипт (если это возможно) надо написать для выделения всех файлов с той же датой, что и файл под курсором
_________________
Юрий Бомштейн
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2478
Location: Большая деревня Москва

Post (Separately) Posted: Thu Jul 12, 2007 22:09    Post subject: Reply with quote

Это возможно.
Если бы оно мне было нужно, я бы взял PowerPro (любая ссылка под постом). Алгоритм:
1. Скрипт запускается с параметрами %Р, %N.
2. Через file.getdate берется его дата.
3. Через file.listfiles составляется список.
4. Затем он просмотривается пофайлово, тем же способом анализируются даты.
5. Через win.sendmessage в QuickSearchWindow осуществляется переход к каждому из этих файлов и посылается команда на выделение.
(Мне скажут, что лучше выделить файлы последовательно - это быстрее. Я соглашусь, если обеспечена сортировка по дате. Можно вначале выдать оную команду - все зависит от задачи).
Желаю успехов.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Bomm



Joined: 15 Jan 2005
Posts: 245
Location: Москва

Post (Separately) Posted: Fri Jul 13, 2007 08:07    Post subject: Reply with quote

Вахмурка
Спасибо, попробую посмотреть...
_________________
Юрий Бомштейн
Back to top
View user's profile Send private message
Bomm



Joined: 15 Jan 2005
Posts: 245
Location: Москва

Post (Separately) Posted: Thu Feb 14, 2013 10:52    Post subject: Reply with quote

Никто не напишет скрипт без PowerPro ?
Я так и не собрался поставить его и разобраться (((
_________________
Юрий Бомштейн
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2123

Post (Separately) Posted: Fri Feb 15, 2013 13:10    Post subject: Reply with quote

Bomm
Вот, набросал что-то на базе скрипта от Volniy.
Code:
'===============================================================
' Описание:   Выделяет файлы с датой/временем файла под курсором
' Параметр:   %P%N
' Требования: Необходима регистрация WSH Helper for TC by Volniy
'===============================================================
Option Explicit
Dim List, TCS, Cnt, Buf, CurDir, FSO, Date, DateLen, TextClip
'============ Количество символов, учтываемых в дате/времени ===
DateLen = 8
'===============================================================
If WScript.Arguments.Count < 1 Then
  MsgBox "Не указан параметр %P%N", vbOKOnly + vbCritical, "Внимание!"
  WScript.Quit
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(WScript.Arguments(0)) Then
  Set TCS = CreateObject("TCScript.Helper")
  With TCS
    .LockTC True
    TextClip = .GetTextFromClip
    Date = Left(FSO.GetFile(WScript.Arguments(0)).DateLastModified, DateLen)
'    MsgBox "Дата: " & Date, vbInformation, "Информация"
    .SendCommand "cm_ClearAllFolders", True
    .SendCommand "cm_SelectAllFiles", True
    CurDir = .GetSrcPath
    .SendCommand "cm_CopyFullNamesToClip", True
    List = Split(.GetTextFromClip,vbNewLine)
    For Cnt=LBound(List) To UBound(List)
      If Left(FSO.GetFile(List(CNT)).DateLastModified, DateLen) = Date Then
         If Len(CurDir) = 0 Then
            Buf = Buf & List(Cnt) & vbNewLine
         Else
            Buf = Buf & Mid(List(Cnt), Len(CurDir) +2) & vbNewLine
         End If
      End If
    Next
    .SetTextToClip CStr(Buf)
    .SendCommand "cm_LoadSelectionFromClip", True
'    .GetSrcSelectedFiles
'    MsgBox "Выделено файлов с датой файла под курсором: " & _
'       (UBound(.GetSrcSelectedFiles) +1) & "." , vbInformation, "Завершено!"
    .SetTextToClip(TextClip)
    .LockTC False
  End With 
  Set TCS = Nothing
Else
  MsgBox "Надо указать файл!", vbOKOnly + vbExclamation,"Внимание!"
End If
Set FSO = Nothing
WScript.Quit


Last edited by sa on Fri Feb 15, 2013 15:25; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11834
Location: Москва

Post (Separately) Posted: Fri Feb 15, 2013 13:34    Post subject: Reply with quote

Bomm
В этом скрипте поменять параметр %N на %V, под
Code:
Set FSO = CreateObject("Scripting.FileSystemObject")
вставить
Code:
DateF = DateValue(FSO.GetFile(N).DateLastModified)

вместо
Code:
    If Len(FSO.GetFileName(F)) = Len(FSO.GetFileName(N)) Then
это:
Code:
    If FSO.FileExists(F) Then Set Fl = FSO.GetFile(F) Else Set Fl = FSO.GetFolder(F)
    If DateF = DateValue(Fl.DateLastModified) Then

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
prog_san



Joined: 29 Sep 2007
Posts: 253
Location: Пенза

Post (Separately) Posted: Fri Nov 25, 2016 00:54    Post subject: Reply with quote

Стоит задача: выделить в папке все файлы одного дня с текущим. Каким путем стоит решать? День не сегодняшний - поиск "не старше чем" не проходит. А как в диалог поиска дату указанного файла подставить - для меня загадка.
_________________
Errare humanum est
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11834
Location: Москва

Post (Separately) Posted: Fri Nov 25, 2016 01:15    Post subject: Reply with quote

prog_san
Создать шаблон 'Не сегодняшние". Создать команду: em_cd: cd: %A
Quote:
TCFS2.exe /ef msg($0B,0) tem(`em_cd >Не сегодняшние`) tcm(3302) tcm(530) tcm(312) msg($0B,1) tcm(529)

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


Last edited by Flasher on Fri Nov 25, 2016 01:28; edited 1 time in total
Back to top
View user's profile Send private message
prog_san



Joined: 29 Sep 2007
Posts: 253
Location: Пенза

Post (Separately) Posted: Fri Nov 25, 2016 01:24    Post subject: Reply with quote

Flasher wrote:
Создать шаблон 'Cегодняшние"

Файл имеет дату отличную от сегодняшней
_________________
Errare humanum est


Last edited by prog_san on Fri Nov 25, 2016 01:32; edited 2 times in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11834
Location: Москва

Post (Separately) Posted: Fri Nov 25, 2016 01:30    Post subject: Reply with quote

Поправил название. Есть опция "Старше | 1 | дня".
А подобный пример я приводил когда-то здесь.
Можно ещё всякие переключалки окраски делать.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
prog_san



Joined: 29 Sep 2007
Posts: 253
Location: Пенза

Post (Separately) Posted: Fri Nov 25, 2016 01:32    Post subject: Reply with quote

Спасибо! Понял
_________________
Errare humanum est
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11834
Location: Москва

Post (Separately) Posted: Fri Nov 25, 2016 01:32    Post subject: Reply with quote

Блин. Я не понял, в каком месте правда?
prog_san wrote:
выделить в папке все файлы одного дня с текущим

prog_san wrote:
День не сегодняшний

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
prog_san



Joined: 29 Sep 2007
Posts: 253
Location: Пенза

Post (Separately) Posted: Fri Nov 25, 2016 01:33    Post subject: Reply with quote

Одного дня с текущим выделенным файлом Smile

То, что получилось - не выполняет первоначальной задачи. Требовалось выделить файлы которые имеют ту же дату что и текущий файл под курсором
_________________
Errare humanum est


Last edited by prog_san on Fri Nov 25, 2016 01:36; edited 1 time in total
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 11834
Location: Москва

Post (Separately) Posted: Fri Nov 25, 2016 01:35    Post subject: Reply with quote

А. Тогда через скрипт.

prog_san wrote:
Требовалось выделить файлы которые имеют ту же дату что и текущий файл под курсором
Зачем два раза разжёвывать неточное ТЗ? Уже всё ясно.

Вот:
Code:
'============================== VBS ==============================
' Выделение файлов/каталогов по дате файла/каталога под курсором
' Требуется dll-компонент "Script Helper ActiveX for TC by Volniy"
' Параметр: <дата создания/модификации/последнего доступа: 1/2/3>
'=================================================================
Option Explicit: Dim FSO, N, P, L, Item, X, Y, T, D, F
Sub MsgErr
  MsgBox "Укажите 1, 2 или 3 в качестве параметра!",_
  4144, " Выделение элементов" : WScript.Quit
End Sub : If WScript.Arguments.Count = 0 Then MsgErr
Set FSO = CreateObject("Scripting.FileSystemObject")
With CreateObject("TCScript.Helper")
  .Pause = 0   : N = .GetInfo("SN") : If N = ".." Then WScript.Quit
  .Wait = True : P = .GetInfo("SP") : L = Len(P) + 1 : Item = P & N
  Select Case True
    Case FSO.FileExists(Item)   X = 2 : Y = "File"
    Case FSO.FolderExists(Item) X = 3 : Y = "Folder"
    Case Else WScript.Quit
  End Select : T = .GetTextFromClip
  Select Case WScript.Arguments(0)
    Case "1" D = "Created" : Case "2" D = "LastModified"
    Case "3" D = "LastAccessed" : Case Else MsgErr
  End Select
  Execute "DateFl = DateValue(FSO.Get" & Y & "(Item).Date" & D & ")"
  .LockTC True : .SendCommand 524, True : .SendCommand 330 & X, True
  For Each F In .GetSrcSelectedFiles(1)
    Execute "If DateValue(FSO.Get" & Y & "(F).Date" &_
    D & ") = DateFl Then S = S & vbNewLine & Mid(F, L)"
  Next :.SetTextToClip(Mid(S, 3)): .SendCommand 2033, True
  .LockTC False : .SetTextToClip(T)
End With

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


Last edited by Flasher on Fri Nov 25, 2016 16:56; edited 1 time in total
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2123

Post (Separately) Posted: Fri Nov 25, 2016 11:47    Post subject: Reply with quote

prog_san
Ещё такая тема была.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group