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 Previous  1, 2, 3, 4, 5, 6, 7, 8, 9
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



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

Post (Separately) Posted: Wed Dec 06, 2017 13:01    Post subject: Reply with quote

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



Joined: 04 Dec 2016
Posts: 127

Post (Separately) Posted: Wed Dec 06, 2017 13:10    Post subject: Reply with quote

Quote:
Если бы было нужно, то зачем ограничивать поведение?

После пару раз использования скрипта, вдруг позже понял что это тоже необходимо. Если вдруг надо быстро выделить один схожий файл под курсором на другой панели, и чтоб лишить себя лишних нажатий для выделения.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Dec 06, 2017 13:18    Post subject: Reply with quote

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



Joined: 04 Dec 2016
Posts: 127

Post (Separately) Posted: Wed Dec 06, 2017 13:46    Post subject: Reply with quote

Ну потребность в этом же скрипте есть? А это почти тоже самое, но имена файлов не из буфера берутся, а из выделенных файлов на панели. Если в режиме Branch находит много схожих файлов, то их тоже отмечать, даже если пути разные.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Dec 06, 2017 14:14    Post subject: Reply with quote

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



Joined: 04 Dec 2016
Posts: 127

Post (Separately) Posted: Wed Dec 06, 2017 15:33    Post subject: Reply with quote

Flasher
Пока что все отлично работает, спасибо.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Dec 06, 2017 16:34    Post subject: Reply with quote

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



Joined: 04 Jan 2011
Posts: 1036
Location: Донецк

Post (Separately) Posted: Mon Sep 24, 2018 04:52    Post subject: Reply with quote

Спустя три года обновил свой вариант на AHK.
Ссылка на полную версию скрипта.
Данная версия скрипта работает только под TC 9.0 и более новыми версиями. Благодаря новым возможностям Тотала удалось значительно сократить и оптимизировать код.

Code:
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander DreamLair                                           ;
; Script: Selection the same name files and/or dirs in the panels     ;
; Скрипт: Виділення в панелях однойменних файлів та/або каталогів     ;
; Скрипт: Выделение в панелях одноимённых файлов и/или каталогов      ;
; Version: 2.0 (2018.09.24)                                           ;
; Required: Total Commander 9.0+                                      ;
; Tested on: Total Commander 9.21a                                    ;
; Author: LonerD DreamLair.net                                        ;
; Made in Donetsk People's Republic                                   ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameter:                                                          ;
;    1) Selection mode:                                               ;
;       1 - all (default); 2 - only files; 3 - only dirs              ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Параметр:                                                           ;
;    1) Метод виділення:                                              ;
;       1 - все (за замовч.); 2 - тільки файли; 3 - тільки каталоги   ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Параметр:                                                           ;
;    1) Метод выделения:                                              ;
;       1 - всё (по умолчанию); 2 - только файлы; 3 - только каталоги ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

#NoEnv
#NoTrayIcon
#MaxMem 1024
#SingleInstance force
SetBatchLines, -1

Mode = %1%
if Mode not in 1,2,3
  Mode = 1 ; файли і каталоги

ClipSaved := ClipboardAll
Clipboard := ""

if not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
  ExitApp
WinGet, hw_TTOTAL_CMD, ID, A
global hw_TTOTAL_CMD

DllCall("LockWindowUpdate", "uint", hw_TTOTAL_CMD)

TCPanelA := SendMessageTC(1074, 1000, 0, A)
hw_TCPathA := SendMessageTC(1074, 8+TCPanelA, 0, A)
ControlGetText, PathA,, % "ahk_id " hw_TCPathA
PathA := StrReplace(PathA, "\*.*", "\")

hw_TCPathB := SendMessageTC(1074, 11-TCPanelA, 0, A)
ControlGetText, PathB,, % "ahk_id " hw_TCPathB
PathB := StrReplace(PathB, "\*.*", "\")

SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD
SelItems := SendMessageTC(1074, 1004+TCPanelA, 0, A)
if ( SelItems = 0 )
  Goto, Exit

SendMessage, 1075, 2017,,, % "ahk_id " hw_TTOTAL_CMD
FilesA := Clipboard
SendMessage, 1075, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileListA := Clipboard

SendMessage, 1075, 4006,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 330 . Mode,,, % "ahk_id " hw_TTOTAL_CMD
if ( PathA = PathB )
  Goto, Exit

SelItems := SendMessageTC(1074, 1007-TCPanelA, 0, A)
if ( SelItems = 0 )
  Goto, NoSelection

SendMessage, 1075, 2017,,, % "ahk_id " hw_TTOTAL_CMD
FilesB := Clipboard
SendMessage, 1075, 2018,,, % "ahk_id " hw_TTOTAL_CMD
FileListB := Clipboard

FileListSel := ""
Loop, Parse, FilesA, `n, `r
{
  CurrentFile := A_LoopField
  Loop, Parse, FilesB, `n, `r
  {
    if ( CurrentFile = A_LoopField )
      FileListSel := FileListSel A_LoopField "`r`n"
  }
}

if ( FileListSel = "" )
  Goto, NoSelection

FileListSelA := ""
FileListSelB := ""
FileListSelX := ""

FileListX := FileListB
Gosub, LoopFilelist
FileListSelB := FileListSelX

FileListX := FileListA
Gosub, LoopFilelist
FileListSelA := FileListSelX

StringReplace, FileListSelA, FileListSelA, % PathA, , All
StringReplace, FileListSelB, FileListSelB, % PathB, , All

Clipboard := FileListSelB
SendMessage, 1075, 2033,,, % "ahk_id " hw_TTOTAL_CMD
SendMessage, 1075, 400 . TCPanelA,,, % "ahk_id " hw_TTOTAL_CMD
Clipboard := FileListSelA

SendMessage, 1075, 2033,,, % "ahk_id " hw_TTOTAL_CMD

Exit:
Clipboard := ClipSaved
ClipSaved := ""
FileListA := ""
FileListB := ""
FileforSel := ""
FileListSelA := ""
FileListSelB := ""
FileListSelX := ""

DllCall("LockWindowUpdate", "uint", 0)
ExitApp

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
LoopFilelist:
Loop, Parse, FileListSel, `n, `r
{
  FileforSel := A_LoopField
  FileLen := StrLen(FileforSel)
  if ( FileLen > 0 )
  {
    Loop, Parse, FileListX, `n, `r
    {
      StringLen := StrLen(A_LoopField)
      SlashSymbol := SubStr(A_LoopField, StringLen - FileLen, 1)
      StringRight, CurrentFile, A_LoopField, FileLen
      if (( StringLen - FileLen > 1 ) && ( SlashSymbol = "\" ) && ( CurrentFile = FileforSel ))
        FileListSelX := FileListSelX A_LoopField "`r`n"
    }
  }
}
Return
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
NoSelection:
  SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
  SendMessage, 1075, 4006,,, % "ahk_id " hw_TTOTAL_CMD
  SendMessage, 1075, 524,,, % "ahk_id " hw_TTOTAL_CMD
  Goto, Exit
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander Send Message function            ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
SendMessageTC(TCMsg, wParam, lParam, aControl)
{
  SendMessage, % TCMsg, % wParam, % lParam, % aControl, % "ahk_id " hw_TTOTAL_CMD
  return ErrorLevel
}
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

_________________
Total Commander DreamLair - мечтать всегда, мыслить тотально, быть командиром жизни
Win10 x64 HE SL Eng | TC DreamLair v2020 eternal pre-α (9.21a x32+x64) | AkelPad Lair v2020α (4.9.9 x86) | Cent Browser Lair
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 Previous  1, 2, 3, 4, 5, 6, 7, 8, 9
Page 9 of 9

 
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