Сравнение файлов в панелях по именам
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next  :| |:
Total Commander -> Автоматизация Total Commander

#46:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Apr 16, 2015 08:30
    —
hjiapex
Прочитайте внимательно правила форума — слишком много нарушений.
По очевидным причинам обсуждение полностью перенесено из "Общих вопросов" в подфорум по автоматизации и добавлено в уже существующую тему.
Оверквотинг на форуме запрещён. Научитесь обходиться без злоупотребления кнопкой "Цитата", есть другие методы. Всё избыточное цитирование из предыдущих постов удалено без всякого ущерба для связности обсуждения.
Исходный заголовок темы "Сравнить каталоги" был слишком общим.

#47:  Author: hjiapex PostPosted: Thu Apr 16, 2015 11:42
    —
Господи, ЗАРАБОТАЛО! БОЖЕ МОЙ! З А Р А Б О Т А Л О!!!

Добавлено спустя 9 минут:

Рано радуюсь. Сравнивает то идет, если я просто открыл 2 каталога с файлами. А если я открываю единым списком файлов свой каталог(с подкаталогами), то скрипт эти списки не сравнивает...

Добавлено спустя 3 минуты:

Блин, наверно не понятно объяснил. При нажатии Shift+B открывается единый список файлов в данном каталоге (то есть подкаталоги тоже сканируются). Просто в моем случае одинаковые файлы находятся в разных папках. И таких папок около 40, по этому использовал сочетание Shift+B

#48:  Author: sa PostPosted: Thu Apr 16, 2015 17:36
    —
hjiapex wrote:
- Сравнить каталоги(она выделяла в активном каталоге файлы, которые НЕ повторяются по именам)

Прикол в том, что командой Сравнить каталоги
справка wrote:
Выделяются различающиеся файлы, причём только более новые. Файлы, отсутствующие в одном каталоге также выделяются в другом.
То есть имя у файлов может быть одно и тоже, а дата/время различаться и тогда один из них (более свежий) будет выделен, и он, кстати, может оказаться как в активном, так и в целевом каталоге.
Кроме того, возможна ситуация, когда имя у файлов может быть одно и тоже, дата/время тоже совпадает, а размер файлов разный и тогда будут выделены все такие файлы (как в активном, так и в целевом каталоге).

hjiapex wrote:
Как теперь мне реализовывать сложное копирование списками?
Понять бы, о чём речь…

#49:  Author: hjiapex PostPosted: Thu Apr 16, 2015 20:38
    —
Flasher
Как поправить скрипт, что бы он сравнивал файлы, даже если я нажал ctrl+b и вывел все файлы (из подкаталогов) списком?

#50:  Author: AvadaLocation: Россия, Саратов PostPosted: Thu Apr 16, 2015 21:19
    —
hjiapex
Об оверквотинге уже неоднократно говорили. Пока сделать выводы. Про ссылки на скрипты прямым текстом сказано в памятке к подфоруму. Замечание. Выше (после моей правки) показано, как подобные вещи должны выглядеть нормально. Хотя на самом деле в этом сообщении надобности вообще нет: про показ файлов без подкаталогов (только там Ctrl+B или Shift+Ctrl+B, а не Shift+B) сказано чуть выше, проблема вполне ясна с первого раза без повторов.

#51:  Author: hjiapex PostPosted: Thu Apr 16, 2015 22:48
    —
Avada
Если вы под оверквотингом подразумеваете "цитату" ок, больше не буду ее использовать. А цитировал я, в надежде, что человек, который писал скрипт, быстрее придет в тему и отпишется.

#52:  Author: FlasherLocation: Москва PostPosted: Fri Apr 17, 2015 00:16
    —
Поскольку такая задача требует дополнительных ресурсов, то предыдущий вариант я, пожалуй, оставлю.
Code:
'===================================================================
' Выделение в панелях одноимённых файлов и/или папок

' Файлы могут быть выделены в т.ч. в режиме без подкаталогов

' Параметры: "%P" "%T" <файлы/каталоги/всё: 1/2/3>

' Автор: Flasher ©
'====================== Путь к утилите 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
If P = T Then CreateObject("WScript.Shell")._
Run TCFS2 & " /ef tcm(536)" : WScript.Quit
Select Case C : Case 1 Tp = 192 : Case 2 Tp = 160 : Case 3 Tp = 224 : End Select
Set FSO  = CreateObject("Scripting.FileSystemObject")
Set Dict = CreateObject("Scripting.Dictionary")
Set Col1 = CreateObject("Scripting.Dictionary")
Set Col2 = CreateObject("Scripting.Dictionary")
Set Col3 = CreateObject("Scripting.Dictionary")
Set ShA  = CreateObject("Shell.Application")
Recursion P : Test = 1 : Recursion T

If Col1.Count And Col2.Count Then
  With CreateObject("WScript.Shell")
    TempFile = ShA.NameSpace(.ExpandEnvironmentStrings("%TEMP%"))._
    Self.Path & "\" & FSO.GetTempName
    FSO.CreateTextFile(TempFile, 1, True).Write vbCr & Join(Col1.Keys, vbNewLine)
    .Run "%comspec% /c clip <""" & TempFile & """",0,True
    .Run TCFS2 & " /ef msg($0B,0) tcm(2033,0) send({TAB})",,True
    FSO.CreateTextFile(TempFile, 1, True).Write vbCr & Join(Col2.Keys, vbNewLine)
    .Run "%comspec% /c clip <""" & TempFile & """",0,True
    .Run TCFS2 & " /ef tcm(2033,0) send({TAB}) msg($0B,1) redraw()",,True
    .Run "%comspec% /c type|clip",0
  End With : FSO.DeleteFile TempFile, 1
End If

Sub Recursion(Fd)
  Set Items = ShA.NameSpace(Fd).Items : Items.Filter Tp, "*"
  If Test <> 1 Then
    For Each F in Items
      Dict.Add "\" & Mid(F.Path, Len(P) + 1) & "\", ""
    Next
  Else
    For Each F in Items
      Mass = Filter(Dict.Keys, "\" & F & "\")
      If Ubound(Mass) >= 0 Then
        S = "" : N = 2 : If C > 1 And F.IsFolder Then N = 1 : S = "\"
        If Not Col3.Exists(CStr(F)) Then
          For Each Fl in Mass : Col1.Add Mid(Fl, 2, Len(Fl) - N), "" : Next
          Col3.Add CStr(F), ""
        End If : Col2.Add Mid(F.Path, Len(T) + 1) & S, ""
      End If
    Next
  End If
  If C = 1 Then
    Items.Filter 160, "*"
    For Each F in Items
      If InStr(F.Type, "ZIP") = 0 Then Recursion F.Path
    Next
  End If
End Sub


hjiapex wrote:
А цитировал я, в надежде, что человек, который писал скрипт, быстрее придет в тему и отпишется.
Скорее наоборот. Меня раздражает избыточное цитирование. И повторное обращение в столь небольшом промежутке времени никак на моём внимании отразиться не может.
А тут Shift не помешало бы на Ctrl исправить.


Last edited by Flasher on Sat Apr 18, 2015 08:24; edited 4 times in total

#53:  Author: hjiapex PostPosted: Fri Apr 17, 2015 00:19
    —
Flasher
По поводу скрипта, новый должен уже и с ctrl+b сравнивать?

#54:  Author: FlasherLocation: Москва PostPosted: Fri Apr 17, 2015 00:22
    —
hjiapex
Читаем шапку. Иначе какой смысл было допиливать?

#55:  Author: hjiapex PostPosted: Fri Apr 17, 2015 00:27
    —
Flasher
Я в том смысле, что ошибку выдает. Скинул бы скрин, да форум не разрешает. В общем Код ошибки 800A01C9. Строка 49 Символ 9 Ошибка: Запись уже связана с элементом данного семейства. Я понял причину. Если у меня в окне, где показан список без подкаталогов (ctrl+b) повторяются файлы (к примеру в 2х разных папках одного каталога были одинаковые файлы, и в этом общем списке есть 2 файла с одинаковым именем), то программа выдает ошибку.


Last edited by hjiapex on Fri Apr 17, 2015 00:41; edited 1 time in total

#56:  Author: FlasherLocation: Москва PostPosted: Fri Apr 17, 2015 00:40
    —
А разве в памятке написано, что тут скриншоты нужно скидывать? Советую внимательно ознакомиться.

Касаемо ошибки. По идее быть не должно. Прошу скинуть список полных путей папки пассивной панели. Если он большой, то спрятать в спойлер (тег [cut]).

#57:  Author: hjiapex PostPosted: Fri Apr 17, 2015 00:43
    —
Flasher
Вы меня конечно простите, я пришел с обычных форумов, а тут слишком высокие требования к поведению на форуме.
По теме - я не понимаю, скинуть список полных путей папки пассивной панели? Можно для меня НЕ УМНОГО разжевать данное предложение?

#58:  Author: FlasherLocation: Москва PostPosted: Fri Apr 17, 2015 01:00
    —
hjiapex
Требования не столько высокие, сколько оптимальные для восприятия и поиска. Скопипастить сообщение в тег цитаты из окна куда быстрее, чем колупаться с хостингом картинок.
Как сюда скинуть список? Ну, это ОЧЕНЬ сложно. Smile В режиме без подкаталогов выделить всё по Ctrl+A, выполнить команду "Копировать полные имена файлов" и вставить сюда под спойлер.

#59:  Author: hjiapex PostPosted: Fri Apr 17, 2015 01:02
    —
 Hidden text


Last edited by hjiapex on Fri Apr 17, 2015 02:10; edited 1 time in total

#60:  Author: FlasherLocation: Москва PostPosted: Fri Apr 17, 2015 02:07
    —
Прошу отредактировать пост с заменой на отсортированный список по [=tc.Путь][=tc.Полное имя].

Last edited by Flasher on Fri Apr 17, 2015 02:24; edited 1 time in total



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next  :| |:
Page 4 of 9

Powered by phpBB © 2001, 2005 phpBB Group