Как сравнить папки ТОЛЬКО по именам файлов?

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

toran30
Как насчёт такого варианта?:

Код: Выделить всё

'==========================================================================
' Выделение в другой панели папок, имеющих все выделенные элементы активной

' Параметры: %F "%T"
'================================ Путь к TCFS2 ============================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'==========================================================================

With WScript.Arguments
  If .Count = 0 Then WScript.Quit
  List = .Item(0) : Target = .Item(1)
End With : NL = vbNewLine

With CreateObject("Scripting.FileSystemObject")
  Names = .OpenTextFile(List, 1).ReadAll
  Arr = Split(Names, NL) : Count = Ubound(Arr) : Names = NL & Names
  For Each Fd in .GetFolder(Target).SubFolders
    n = 0 : Set Fold = .GetFolder(Fd)
    If .FolderExists(Arr(0)) Then
      For Each F in Fold.SubFolders
        If InStr(Names, NL & .GetFileName(F) & "\" & NL) Then n = n + 1
      Next
    End If
    For Each F in Fold.Files
      If InStr(Names, NL & .GetFileName(F) & NL) Then n = n + 1
    Next : If n = Count Then Folders = Folders & Fd & "\" & NL
  Next
End With
If Folders <> "" Then
  Dim WSH : Set WSH = CreateObject("WScript.Shell")
  P = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
  A = WSH.RegRead(P) : If A > 0 Then WSH.RegWrite P, 0, "REG_DWORD"
  With CreateObject("InternetExplorer.Application")
    .Navigate("about:blank")
    T = .Document.ParentWindow.ClipboardData.GetData("text")
    .Document.ParentWindow.ClipboardData.SetData "text", Folders
    WSH.Run TCFS2 & "/ef ""send({tab}) tcm(2033)""", 0, True
    .Document.ParentWindow.ClipboardData.SetData "text", T
    .ExecWB 45, 2 : .Quit
  End With : If A > 0 Then WSH.RegWrite P, A, "REG_DWORD"
End If : Set WSH = Nothing : WScript.Quit
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Polkan
Сообщения: 3
Зарегистрирован: Вт янв 10, 2017 19:26
Откуда: РФ, Иркутск

Как сравнить папки по именам файлов БЕЗ УЧЁТА РАСШИРЕНИЙ?

Сообщение Polkan »

Здравствуйте,
Подниму эту тему как наиболее близкую к моей проблеме.
Задача такова:
Есть две папки с файлами:
в одной файлы 1.xxx, 2.xxx, 3.xxx, 4.xxx, 5.xxx, ....
во второй файлы 1.yyy, 3.yyy, 5.yyy, ...
т.е. файлы в папках с совпадающими или нет именами, но с разными расширениями (мне это нужно для сравнения архивных папок с JPG и RAW фотофайлами).

Цель:
сравнением папок выявить несовпадающие по именам файлы и удалить/переместить/скопировать их. Расширения должны игнорироваться.

Как это проще всего сделать? "Синхронизация каталогов", насколько я её изучил, так делать не может.
Буду очень признателен за работающее решение или направление поиска.
(ТС 8.52)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Polkan
Поиск в этих папках дубликатов по размеру, содержимому, по данным плагинов: [=tc.Имя].
Вывод на панель, Num+, выбрать нужные опции, применить и делать с выделенным всё, что заблагорассудиться.
Можно найти только по [=tc.Имя] и так же работать.
Polkan писал(а):Подниму эту тему как наиболее близкую к моей проблеме.
Ошибаетесь: 1, 2, 3.
Последний раз редактировалось Flasher Вт янв 10, 2017 22:01, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Polkan
Сообщения: 3
Зарегистрирован: Вт янв 10, 2017 19:26
Откуда: РФ, Иркутск

Сообщение Polkan »

Flasher писал(а):Polkan
Поиск в этих папках дубликатов по размеру, содержимому, по данным плагинов: [=tc.Имя].
Вывод на панель, Ctrl+A, сохранить выделение, выйти из результатов.
Потом найти всё в этих папках, вывести на панель и пользоваться восстановением выделения и инверсией с необходимыми процедурами.
Споткнулся сразу на первой строке: "Искомые файлы не найдены"... Соответственно, нет "Вывода на панель" и всего нижеследующего.
Полагаю, что из-за поиска поочередно в каждой из папок? Их как-то можно две сразу в "Поиск" загрузить или я что-то другое важное упустил?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Справка: Место поиска:. См. ссылки выше. Всё давно уже разобрано (с автоматизацией и без).

P.S.: Не надо цитировать всё подряд.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Polkan
Прочитайте правила форума и получите замечание за их нарушение. Вам всё ответили, больше тут обсуждать нечего.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Polkan
Сообщения: 3
Зарегистрирован: Вт янв 10, 2017 19:26
Откуда: РФ, Иркутск

Сообщение Polkan »

Flasher
Спасибо за указанные источники - первая же тема "Поиск дубликатов по именам файлов разного типа" вопрос закрыла.
Но Ваш рецепт оказался, пожалуй, проще и понятней остальных ([=tc.Имя] достаточно); огромное Спасибо!
Ответить