View previous topic :: View next topic |
Author |
Message |
avyor

Joined: 14 Aug 2011 Posts: 8 Location: Москва
|
(Separately) Posted: Sun Aug 14, 2011 18:28 Post subject: Сравнить в панелях списки не только файлов, но и каталогов |
|
|
Нужна такая пользовательская команда (часто востребована при резервном копировании).
В Totalcmd.inc есть
cm_CompareDirs=533;Compare dirs
cm_CompareDirsWithSubdirs=536;Also mark subdirs not present in other dir
Но как посмотреть коды этих команд, чтобы изменить для нужного варианта, - не нашёл (и поиск по форуму не помог). Подскажите, пожалуйста. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Sun Aug 14, 2011 18:38 Post subject: |
|
|
avyor
Перечитал трижды, но так и не понял, о чём, собственно, вопрос.
Первая команда сравнивает в соседних панелях файлы. Вторая сравнивает также и отображаемые в панелях подкаталоги (но не их содержимое, только имена и дату/время). Имена команд приведены. Десятичные идентификаторы приведены. HEX-идентификаторы можно посчитать самому или посмотреть здесь (там, кстати, и ещё много интересного). Команды рабочие. Какая понадобилась пользовательская команда и зачем, если уже есть встроенная? Какие ещё "коды" нужны? Что менять? Для какого "нужного варианта"?
Короче говоря, можно спрашивать так, чтобы суть дела понимал не только спрашивающий, но и все остальные?
P.S. А для нормального резервного копирования вообще-то используется инструментарий синхронизации каталогов. Сравнение их в панелях TC выполняется слишком грубо и приблизительно. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
avyor

Joined: 14 Aug 2011 Posts: 8 Location: Москва
|
(Separately) Posted: Sun Aug 14, 2011 22:29 Post subject: |
|
|
Avada
За ссылку спасибо!
Quote: | Первая команда сравнивает в соседних панелях файлы. Вторая сравнивает также и отображаемые в панелях подкаталоги (но не их содержимое, только имена и дату/время). |
В том и дело, что если имена и дата подкаталогов совпадают, то cm_CompareDirsWithSubdirs их не выделяет, даже если в одном из них будет с десяток папок, отсутствующих в подкаталоге на другой панели. И как их тогда найти? Просматривать и сравнивать все подкаталоги вручную? А если их сотни?
Для того и хочу сделать пользовательскую команду, которая бы выделяла на разных панелях те подкаталоги, содержание которых не совпадает. Встроенной такой команды нет. Потому и нужны коды указанных выше команд, чтобы разобраться, как написать такую.
Quote: | А для нормального резервного копирования вообще-то используется инструментарий синхронизации каталогов. Сравнение их в панелях TC выполняется слишком грубо и приблизительно.
|
Синхронизация, если папок много, идёт очень долго. К тому же со сбоями (указал убирать одинаковые файлы - верхние в очень длинном списке убраны, а дальше остались и т. д.). Да и не всегда нужен такой подробный анализ - мне достаточно увидеть различия в составе подкаталогов. |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Mon Aug 15, 2011 07:14 Post subject: |
|
|
avyor
Никаких кодов, открытых для препарирования пользователями, там нет, и разбираться, соответственно, не с чем. Указанные встроенные команды работают так, как работают, и по-другому не будут, пока разработчик сам не внесёт какие-то принципиальные изменения в этот механизм.
Поставленная задача решается только через инструмент синхронизации. Где есть куча опций и, в частности, можно не включать опцию "по содержимому" (файлов, не каталогов!), что заметно ускорит процесс сравнения. Никаких сбоев там нет — надо правильно пользоваться (в указанном случае — после отключения показа одинаковых файлов просто дать довести сравнение до конца: пока обработка не закончена, отображаются все файлы). _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Aug 15, 2011 15:33 Post subject: |
|
|
avyor wrote: | если имена и дата подкаталогов совпадают, то cm_CompareDirsWithSubdirs их не выделяет | Можно написать скрипт, сравнивающий каталоги по размеру и выделяющий несовпавшие одноимённые. |
|
Back to top |
|
 |
avyor

Joined: 14 Aug 2011 Posts: 8 Location: Москва
|
(Separately) Posted: Tue Aug 16, 2011 22:47 Post subject: |
|
|
Avada
Quote: | Никаких кодов, открытых для препарирования пользователями, там нет, и разбираться, соответственно, не с чем | Жаль.
Quote: | Указанные встроенные команды работают так, как работают, и по-другому не будут, пока разработчик сам не внесёт какие-то принципиальные изменения в этот механизм. |
Ну и пусть себе работают. Я же не изменять их хотел, а дополнить другой командой (сразу же написал - пользовательской). Поэтому ни о каком препарировании речи не было.
Quote: | Поставленная задача решается только через инструмент синхронизации. |
А вот это уже странно. По-моему, пользователь вполне может сам решать, каким инструментом в каких случаях пользоваться.
(Я ещё помню времена, когда практически все устанавливаемые программы скопом лезли в С:\Program Files, даже не спрашивая, хочу ли я их туда ставить. И приходилось потом ручками их оттуда выковыривать и переносить в нужные места.)
О синхронизации уже писал, что она удобна далеко не всегда. Как раз когда файлов и папок много, то Quote: | дать довести сравнение до конца | - очень долго (даже когда опция "по содержимому" отключена). Да и интерфейс не самый удобный.
Так что указанная пользовательская команда нужна.
И, повторюсь, жаль, что разработчик не даёт возможности её написать. Собака на сене получается.
Flasher
Quote: | Можно написать скрипт, сравнивающий каталоги по размеру и выделяющий несовпавшие одноимённые. |
Это был бы выход. Но сам не смогу. А кого можно попросить? Вы, например, сможете? |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Tue Aug 16, 2011 23:54 Post subject: |
|
|
avyor wrote: | Я же не изменять их хотел, а дополнить другой командой (сразу же написал - пользовательской). |
Написать-то можно что угодно. А вот реально сделать... На базе указанных двух встроенных команд пользовательская команда с запрошеным функционалом создана быть не может. Скрипт — другое дело, но это к разговору о командах отношения не имеет.
avyor wrote: | По-моему, пользователь вполне может сам решать, каким инструментом в каких случаях пользоваться. |
И что он дальше со своим решением делать будет? По-моему, пользователь должен понимать, что если запрошенным инструментом задача в принципе не реализуется, а реализуется иначе, то от одного его хотения, мягко говоря, не всё зависит.
На этом дискуссию предлагаю закончить. Запрос по скриптам был сделан. Возможно, кто-то поможет. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Aug 17, 2011 01:11 Post subject: |
|
|
avyor wrote: | Вы, например, сможете? | Например, могу. Но работать будет медленно (циклы). |
|
Back to top |
|
 |
Avada

Joined: 01 Aug 2008 Posts: 10415 Location: Россия, Саратов
|
(Separately) Posted: Wed Aug 17, 2011 09:28 Post subject: |
|
|
Flasher
Хорошая вещь, спасибо. А можно сделать вариант только для каталогов, без обработки отображаемых файлов? _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed Aug 17, 2011 14:30 Post subject: |
|
|
Ускорил по совету Batya.
В обновлённом варианте для сравнения/выделения только папок нужно удалить кусок:
Code: | D.RemoveAll
G.RemoveAll
For Each F in P.Files
D.Add F.Name, F.SIze
Next
For Each F in T.Files
G.Add F.Name, F.SIze
Next
For Each F in D.Keys
If G.Exists(F) And D(F) <> G(F) Then S = S & vbnewline & F
Next |
|
|
Back to top |
|
 |
avyor

Joined: 14 Aug 2011 Posts: 8 Location: Москва
|
(Separately) Posted: Wed Aug 17, 2011 22:07 Post subject: |
|
|
Avada
Согласен, здесь можно закончить.
Разве что сообщить пожелания разработчику.
Flasher
Большое спасибо!
Но тут уже есть конкретные вопросы по работе скрипта.
Поскольку логичнее это продолжить обсуждать в "Автоматизации Total Commander", продолжение перенёс туда http://forum.wincmd.ru/viewtopic.php?p=81574#81574.
Посмотрите, пожалуйста. |
|
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
|