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 

Сравнить в панелях списки не только файлов, но и каталогов

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
avyor



Joined: 14 Aug 2011
Posts: 8
Location: Москва

Post (Separately) Posted: Sun Aug 14, 2011 18:28    Post subject: Сравнить в панелях списки не только файлов, но и каталогов Reply with quote

Нужна такая пользовательская команда (часто востребована при резервном копировании).

В Totalcmd.inc есть
cm_CompareDirs=533;Compare dirs
cm_CompareDirsWithSubdirs=536;Also mark subdirs not present in other dir

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



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

Post (Separately) Posted: Sun Aug 14, 2011 18:38    Post subject: Reply with quote

avyor
Перечитал трижды, но так и не понял, о чём, собственно, вопрос.
Первая команда сравнивает в соседних панелях файлы. Вторая сравнивает также и отображаемые в панелях подкаталоги (но не их содержимое, только имена и дату/время). Имена команд приведены. Десятичные идентификаторы приведены. HEX-идентификаторы можно посчитать самому или посмотреть здесь (там, кстати, и ещё много интересного). Команды рабочие. Какая понадобилась пользовательская команда и зачем, если уже есть встроенная? Какие ещё "коды" нужны? Что менять? Для какого "нужного варианта"?
Короче говоря, можно спрашивать так, чтобы суть дела понимал не только спрашивающий, но и все остальные?
P.S. А для нормального резервного копирования вообще-то используется инструментарий синхронизации каталогов. Сравнение их в панелях TC выполняется слишком грубо и приблизительно.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
avyor



Joined: 14 Aug 2011
Posts: 8
Location: Москва

Post (Separately) Posted: Sun Aug 14, 2011 22:29    Post subject: Reply with quote

Avada
За ссылку спасибо!

Quote:
Первая команда сравнивает в соседних панелях файлы. Вторая сравнивает также и отображаемые в панелях подкаталоги (но не их содержимое, только имена и дату/время).

В том и дело, что если имена и дата подкаталогов совпадают, то cm_CompareDirsWithSubdirs их не выделяет, даже если в одном из них будет с десяток папок, отсутствующих в подкаталоге на другой панели. И как их тогда найти? Просматривать и сравнивать все подкаталоги вручную? А если их сотни?
Для того и хочу сделать пользовательскую команду, которая бы выделяла на разных панелях те подкаталоги, содержание которых не совпадает. Встроенной такой команды нет. Потому и нужны коды указанных выше команд, чтобы разобраться, как написать такую.

Quote:
А для нормального резервного копирования вообще-то используется инструментарий синхронизации каталогов. Сравнение их в панелях TC выполняется слишком грубо и приблизительно.

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



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

Post (Separately) Posted: Mon Aug 15, 2011 07:14    Post subject: Reply with quote

avyor
Никаких кодов, открытых для препарирования пользователями, там нет, и разбираться, соответственно, не с чем. Указанные встроенные команды работают так, как работают, и по-другому не будут, пока разработчик сам не внесёт какие-то принципиальные изменения в этот механизм.
Поставленная задача решается только через инструмент синхронизации. Где есть куча опций и, в частности, можно не включать опцию "по содержимому" (файлов, не каталогов!), что заметно ускорит процесс сравнения. Никаких сбоев там нет — надо правильно пользоваться (в указанном случае — после отключения показа одинаковых файлов просто дать довести сравнение до конца: пока обработка не закончена, отображаются все файлы).
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Mon Aug 15, 2011 15:33    Post subject: Reply with quote

avyor wrote:
если имена и дата подкаталогов совпадают, то cm_CompareDirsWithSubdirs их не выделяет
Можно написать скрипт, сравнивающий каталоги по размеру и выделяющий несовпавшие одноимённые.
Back to top
View user's profile Send private message
avyor



Joined: 14 Aug 2011
Posts: 8
Location: Москва

Post (Separately) Posted: Tue Aug 16, 2011 22:47    Post subject: Reply with quote

Avada
Quote:
Никаких кодов, открытых для препарирования пользователями, там нет, и разбираться, соответственно, не с чем
Жаль.
Quote:
Указанные встроенные команды работают так, как работают, и по-другому не будут, пока разработчик сам не внесёт какие-то принципиальные изменения в этот механизм.

Ну и пусть себе работают. Я же не изменять их хотел, а дополнить другой командой (сразу же написал - пользовательской). Поэтому ни о каком препарировании речи не было.
Quote:
Поставленная задача решается только через инструмент синхронизации.

А вот это уже странно. По-моему, пользователь вполне может сам решать, каким инструментом в каких случаях пользоваться.
(Я ещё помню времена, когда практически все устанавливаемые программы скопом лезли в С:\Program Files, даже не спрашивая, хочу ли я их туда ставить. И приходилось потом ручками их оттуда выковыривать и переносить в нужные места.)
О синхронизации уже писал, что она удобна далеко не всегда. Как раз когда файлов и папок много, то
Quote:
дать довести сравнение до конца
- очень долго (даже когда опция "по содержимому" отключена). Да и интерфейс не самый удобный.

Так что указанная пользовательская команда нужна.
И, повторюсь, жаль, что разработчик не даёт возможности её написать. Собака на сене получается.


Flasher
Quote:
Можно написать скрипт, сравнивающий каталоги по размеру и выделяющий несовпавшие одноимённые.

Это был бы выход. Но сам не смогу. А кого можно попросить? Вы, например, сможете?
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Tue Aug 16, 2011 23:54    Post subject: Reply with quote

avyor wrote:
Я же не изменять их хотел, а дополнить другой командой (сразу же написал - пользовательской).

Написать-то можно что угодно. А вот реально сделать... На базе указанных двух встроенных команд пользовательская команда с запрошеным функционалом создана быть не может. Скрипт — другое дело, но это к разговору о командах отношения не имеет.

avyor wrote:
По-моему, пользователь вполне может сам решать, каким инструментом в каких случаях пользоваться.

И что он дальше со своим решением делать будет? По-моему, пользователь должен понимать, что если запрошенным инструментом задача в принципе не реализуется, а реализуется иначе, то от одного его хотения, мягко говоря, не всё зависит.
На этом дискуссию предлагаю закончить. Запрос по скриптам был сделан. Возможно, кто-то поможет.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Aug 17, 2011 01:11    Post subject: Reply with quote

avyor wrote:
Вы, например, сможете?
Например, могу. Но работать будет медленно (циклы).
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Wed Aug 17, 2011 09:28    Post subject: Reply with quote

Flasher
Хорошая вещь, спасибо. А можно сделать вариант только для каталогов, без обработки отображаемых файлов?
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Wed Aug 17, 2011 14:30    Post subject: Reply with quote

Ускорил по совету 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
View user's profile Send private message
avyor



Joined: 14 Aug 2011
Posts: 8
Location: Москва

Post (Separately) Posted: Wed Aug 17, 2011 22:07    Post subject: Reply with quote

Avada
Согласен, здесь можно закончить.
Разве что сообщить пожелания разработчику.


Flasher
Большое спасибо!

Но тут уже есть конкретные вопросы по работе скрипта.
Поскольку логичнее это продолжить обсуждать в "Автоматизации Total Commander", продолжение перенёс туда http://forum.wincmd.ru/viewtopic.php?p=81574#81574.
Посмотрите, пожалуйста.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
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