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



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

Post (Separately) Posted: Sun Jun 16, 2013 15:43    Post subject: Сравнение файлов в панелях по именам Reply with quote

Можно ли каким-то нехитрым способом сравнить и выделить файлы (и каталоги) в панелях только по именам, не учитывая их размер, даты...
( cm_CompareDirs выделяет в панелях файлы с различающимися датами - это не то, что требуется )
Приходит только идея скрипта, который выполняет копирование списка имён в панелях и построчное сравнение этих списков...
Но может есть какой-то более простой способ?
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jun 16, 2013 16:03    Post subject: Reply with quote

Для разноразмерных было (отдельно для папок). Для любых папок было (у меня сейчас слегка исправленный вариант). Чисто по именам ещё такой вариант:
Code:
'=====================================================================
' Выделение в панелях одноимённых файлов и/или папок

' Параметры: "%P" "%T" <файлы/каталоги/всё: 1/2/3>
'======================= Путь к утилите TCFS2 ========================
TCFS2 = "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"
'=====================================================================
With WScript.Arguments
  If .Count < 3 Then MsgBox "Укажите все требуемые параметры!", 48,_
  Space(13) & "Выделение элементов в панели" : WScript.Quit
  P = .Item(0) : T = .Item(1) : C = .Item(2)
End With
With CreateObject("Scripting.FileSystemObject")
  Set P = .GetFolder(P) : Set T = .GetFolder(T)
End With
Set D = CreateObject("Scripting.Dictionary")
Set G = CreateObject("Scripting.Dictionary")

Select Case C
  Case 1 ForFolders List
  Case 2 ForFiles List
  Case 3 ForFolders List : ForFiles List
End Select : D.RemoveAll : G.RemoveAll : Set D = Nothing : Set G = Nothing

With CreateObject("InternetExplorer.Application")
  .Navigate("about:blank")
  T = .Document.ParentWindow.ClipboardData.GetData("text")
  .Document.ParentWindow.ClipboardData.SetData "text", Mid(List,1)
  CreateObject("WScript.Shell").Exec TCFS2 & " /ef msg($0B,0) ""tcm(2033) tcm(4002) tcm(2033)" & _
  " tcm(4001), test(L_isActive) | tcm(2033) tcm(4001) tcm(2033) tcm(4002)"" msg($0B,1) redraw()"
  .Document.ParentWindow.ClipboardData.SetData "text", Mid(T,1)
  .ExecWB 45, 2 : .Quit
End With : Wscript.Quit

Sub ForFolders(S)
  Set SFolders = P.SubFolders
  If SFolders.Count Then
    For Each F in SFolders     : D.Add F.Name, "" : Next
    For Each F in T.SubFolders : G.Add F.Name, "" : Next
    For Each F in D.Keys
      If G.Exists(F) Then S = S & vbnewline & F & "\"
    Next
  End If
End Sub

Sub ForFiles(S)
  For Each F in P.Files : D.Add F.Name, "" : Next
  For Each F in T.Files : G.Add F.Name, "" : Next
  For Each F in D.Keys
    If G.Exists(F) Then S = S & vbnewline & F
  Next
End Sub


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



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

Post (Separately) Posted: Mon Jun 17, 2013 19:53    Post subject: Reply with quote

Спасибо!!!
Работает. Неспешно и не всегда стабильно (иногда после вызова скрипта ничего не происходит, нужно второй раз вызывать), но в целом - то что надо.
Для любых папок я уже давно использую почти ту конструкцию, что у тебя в посте.
А вот для файлов - не хватало.

Имхо, это такая функция, которая должна бы быть по умолчанию в файловом менеджере. Сейчас у Гислера подобное сравнение можно сделать в инструменте синхронизации, но нет экспорта результатов сравнения на панель (по аналогии с экспортом результатов поиска).
_________________
Win11 x64 Eng | TC DreamLair eternal pre-α
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sun Jun 23, 2013 17:24    Post subject: Reply with quote

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



Joined: 03 Jan 2012
Posts: 10
Location: Россия, Москва

Post (Separately) Posted: Fri Jun 28, 2013 11:33    Post subject: Reply with quote

LonerD
Quote:
( cm_CompareDirs выделяет в панелях файлы с различающимися датами - это не то, что требуется )


cm_FileSync (в частности с галкой "Игнорировать дату" -- и при необходимости другими) и нажатие "Сравнить" (синхронизировать после этого не обязательно) -- не то, что надо?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Fri Jun 28, 2013 12:43    Post subject: Reply with quote

mwz
Выше уже абсолютно ясно (и абсолютно правильно) сказано:
LonerD wrote:
Сейчас у Гислера подобное сравнение можно сделать в инструменте синхронизации, но нет экспорта результатов сравнения на панель (по аналогии с экспортом результатов поиска).

Так что — как минимум, не совсем то.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2561

Post (Separately) Posted: Fri Jun 28, 2013 14:14    Post subject: Reply with quote

LonerD wrote:
Приходит только идея скрипта

Может, стоит попросить Гислера ввести в wincmd.ini один или два ключа, чтобы при сравнении файлов можно было игнорировать дату и размер файлов? По аналогии с существующим ключом 1hourdif=1…
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jun 28, 2013 14:59    Post subject: Reply with quote

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



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Jun 28, 2013 15:25    Post subject: Reply with quote

По-любому. Ключи - это путаница. А команда будет полезна, если надо использовать оба режима.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Fri Jun 28, 2013 15:37    Post subject: Reply with quote

sa
Если на то пошло, надо не ключи просить, а полноценные настроечные опции. Существуют файл-менеджеры, где это давным-давно реализовано либо в общем диалоге настроек, либо в специальном операционном диалоге сравнения, появляющемся после вызова соответствующей команды. Вообще говоря, второй вариант предпочтительнее.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2561

Post (Separately) Posted: Fri Jun 28, 2013 15:57    Post subject: Reply with quote

Flasher wrote:
Готовая команда всяко лучше ключей.
Сейчас уже имеются, как минимум 3 команды сравнения (Сравнить каталоги, Сравнить каталоги с учётом подкаталогов, Сравнить каталоги, скрыв одинаковые файлы). Потому и предложил ключ, который бы менял их поведение. А так захочется завести целых три дополнительных команды по аналогии с существующими…

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



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

Post (Separately) Posted: Fri Jun 28, 2013 16:36    Post subject: Reply with quote

MVV wrote:
если надо использовать оба режима.
Только режима 3.

Avada wrote:
Вообще говоря, второй вариант предпочтительнее.
Из контекста неясно, какой второй. Команды или опции в диалоге?

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



Joined: 29 Apr 2009
Posts: 2561

Post (Separately) Posted: Fri Jun 28, 2013 16:50    Post subject: Reply with quote

Flasher
Нет, как раз без сторонних средств в итоге хотелось бы обойтись(блокнот к ним не отношу).
Скорее, мне ближе вариант Avada с опциями в диалоге, где команда объединяет все три имеющиеся (опции с учётом подкаталогов и скрыть одинаковые) и дополнительными опциями учёта даты и размера.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Fri Jun 28, 2013 17:17    Post subject: Reply with quote

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



Joined: 01 Aug 2008
Posts: 10235
Location: Россия, Саратов

Post (Separately) Posted: Fri Jun 28, 2013 17:21    Post subject: Reply with quote

Flasher wrote:
Из контекста неясно, какой второй. Команды или опции в диалоге?

Из контекста, ИМХО, как раз всё ясно.
Avada wrote:
либо в общем диалоге настроек, либо в специальном операционном диалоге сравнения, появляющемся после вызова соответствующей команды

Диалоговые опции в аналогичных программах предусмотрены по-любому. Но в одном случае они достаточно стабильные, долговременные, в общем диалоге настроек, а в другом — в операционном диалоге, более гибко регулируемые. Пример первой реализации — FreeCommander, примеры второй — Altap Salamander и SpeedCommander. Условный аналог соответствующих вариантов в TC (только для другой операции) — настройки архивации на странице "Архиваторы" и в диалоге упаковки.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.


Last edited by Avada on Fri Jun 28, 2013 17:32; edited 1 time in total
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, 3, 4, 5, 6, 7, 8, 9  Next
Page 1 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