View previous topic :: View next topic |
Author |
Message |
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Sun Jun 16, 2013 15:43 Post subject: Сравнение файлов в панелях по именам |
|
|
Можно ли каким-то нехитрым способом сравнить и выделить файлы (и каталоги) в панелях только по именам, не учитывая их размер, даты...
( cm_CompareDirs выделяет в панелях файлы с различающимися датами - это не то, что требуется )
Приходит только идея скрипта, который выполняет копирование списка имён в панелях и построчное сравнение этих списков...
Но может есть какой-то более простой способ? _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Jun 16, 2013 16:03 Post subject: |
|
|
Для разноразмерных было (отдельно для папок). Для любых папок было (у меня сейчас слегка исправленный вариант). Чисто по именам ещё такой вариант: 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.: поиск! - поиск! - поиск! _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Mon Jun 17, 2013 19:53 Post subject: |
|
|
Спасибо!!!
Работает. Неспешно и не всегда стабильно (иногда после вызова скрипта ничего не происходит, нужно второй раз вызывать), но в целом - то что надо.
Для любых папок я уже давно использую почти ту конструкцию, что у тебя в посте.
А вот для файлов - не хватало.
Имхо, это такая функция, которая должна бы быть по умолчанию в файловом менеджере. Сейчас у Гислера подобное сравнение можно сделать в инструменте синхронизации, но нет экспорта результатов сравнения на панель (по аналогии с экспортом результатов поиска). _________________ Windows 11 | TC DreamLair eternal pre-α |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Jun 23, 2013 17:24 Post subject: |
|
|
LonerD
Пожалуйста. Тормоза и нестабильность возникает из-за занесения в буфер предыдущего значения. Криво отрабатывает компонент IE. Себе-то я делаю (портабельно) с другим компонентом, а тут предлагаю только с тем, что должен быть предустановлен в системе. Через консольную утилиту я могу заносить в буфер только через поток, но тогда нельзя будет скрыть окно консоли.
Могу убрать перезапись, но тогда в буфере будет список совпавшего. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
mwz
Joined: 03 Jan 2012 Posts: 10 Location: Россия, Москва
|
(Separately) Posted: Fri Jun 28, 2013 11:33 Post subject: |
|
|
LonerD
Quote: | ( cm_CompareDirs выделяет в панелях файлы с различающимися датами - это не то, что требуется ) |
cm_FileSync (в частности с галкой "Игнорировать дату" -- и при необходимости другими) и нажатие "Сравнить" (синхронизировать после этого не обязательно) -- не то, что надо? |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10284 Location: Россия, Саратов
|
(Separately) Posted: Fri Jun 28, 2013 12:43 Post subject: |
|
|
mwz
Выше уже абсолютно ясно (и абсолютно правильно) сказано:
LonerD wrote: | Сейчас у Гислера подобное сравнение можно сделать в инструменте синхронизации, но нет экспорта результатов сравнения на панель (по аналогии с экспортом результатов поиска). |
Так что — как минимум, не совсем то. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Fri Jun 28, 2013 14:14 Post subject: |
|
|
LonerD wrote: | Приходит только идея скрипта |
Может, стоит попросить Гислера ввести в wincmd.ini один или два ключа, чтобы при сравнении файлов можно было игнорировать дату и размер файлов? По аналогии с существующим ключом 1hourdif=1… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 28, 2013 14:59 Post subject: |
|
|
Готовая команда всяко лучше ключей. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10284 Location: Россия, Саратов
|
(Separately) Posted: Fri Jun 28, 2013 15:37 Post subject: |
|
|
sa
Если на то пошло, надо не ключи просить, а полноценные настроечные опции. Существуют файл-менеджеры, где это давным-давно реализовано либо в общем диалоге настроек, либо в специальном операционном диалоге сравнения, появляющемся после вызова соответствующей команды. Вообще говоря, второй вариант предпочтительнее. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Fri Jun 28, 2013 15:57 Post subject: |
|
|
Flasher wrote: | Готовая команда всяко лучше ключей. | Сейчас уже имеются, как минимум 3 команды сравнения (Сравнить каталоги, Сравнить каталоги с учётом подкаталогов, Сравнить каталоги, скрыв одинаковые файлы). Потому и предложил ключ, который бы менял их поведение. А так захочется завести целых три дополнительных команды по аналогии с существующими…
Avada wrote: | надо не ключи просить, а полноценные настроечные опции. | Но храниться-то эти опции всё равно будут, скорее всего, в ключах.
А реализация интерфейса, разумеется, может быть разной. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 28, 2013 16:36 Post subject: |
|
|
MVV wrote: | если надо использовать оба режима. | Только режима 3.
Avada wrote: | Вообще говоря, второй вариант предпочтительнее. | Из контекста неясно, какой второй. Команды или опции в диалоге?
sa wrote: | Потому и предложил ключ, который бы менял их поведение. | Т.е. предлагается пользователю самому сторонними средствами менять значение этого ключа при выполнении нужной команды выделения? И какое тут тогда преимущество, если мы и так сейчас прибегаем к сторонним решениям? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2599
|
(Separately) Posted: Fri Jun 28, 2013 16:50 Post subject: |
|
|
Flasher
Нет, как раз без сторонних средств в итоге хотелось бы обойтись(блокнот к ним не отношу).
Скорее, мне ближе вариант Avada с опциями в диалоге, где команда объединяет все три имеющиеся (опции с учётом подкаталогов и скрыть одинаковые) и дополнительными опциями учёта даты и размера. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Jun 28, 2013 17:17 Post subject: |
|
|
sa
Т.е. при том или ином режиме мы должны каждый раз лазить в диалог настроек для того, чтобы выделять так, как нам нужно? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10284 Location: Россия, Саратов
|
(Separately) Posted: Fri Jun 28, 2013 17:21 Post subject: |
|
|
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 |
|
|
|
|
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
|