Поиск дубликатов по именам файлов разного типа

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

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

Velvet211
Сообщения: 11
Зарегистрирован: Вс сен 27, 2009 11:05

Поиск дубликатов по именам файлов разного типа

Сообщение Velvet211 »

Добрый день! Подскажите..
Ситуация такая: каждый раз при копировании на винт фотографий с флешки, помещаю raw файлы в отдельную папку. Просматриваю jpg через ctrl+q в соседнем окне, выделяю ненужные фотки и потом их удаляю. Соответственно, какие-то остаются (достаточно много остается, но примерно половина удаляется). Далее, чтобы не забивать жесткий диск, удаляю те же равы просто глазами сравнивая в разных панелях raw и jpg. Так вот - задолбался)) Есть ли какая-то возможность удалять файлы синхронно? Или, скажем, сравнивать каталоги по именам файлов (но без типов) и отмечать только отсутствующие в одном из окон?

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

Сообщение Flasher »

Отчего с подфорумом мимо кассы?
Поиск в руки - 1, 2.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Velvet211
Если raw-файлы помещены в подпапку по отношению к папке с jpg-файлами (в моём примере подпапка называется SubDirRaw), то можно в папке с jpg-файлами нажать Ctrl+В, с помощью NUM + ввести маску для выделения файлов

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

*.jpg>SubDirRaw\*.raw
и затем инвертировать выделение клавишей NUM *.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Velvet211
Всё это отвечалось на форуме и/или есть в справке. И про назначение подфорума "Секреты и советы" говорилось множество раз.
Замечание за нарушение правил форума. Тема перенесена.
Последний раз редактировалось Avada Ср авг 27, 2014 18:34, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Velvet211
Сообщения: 11
Зарегистрирован: Вс сен 27, 2009 11:05

Сообщение Velvet211 »

Вот ведь гики. Я искал. Не нашел

Спасибо за ответ
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Можно и кнопку создать:

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

TOTALCMD#BAR#DATA
cm_DirBranch,em_SelRaw,cm_ExchangeSelection

WCMICONS.DLL,39
Выделить raw-файлы без одноимённых jpg-файлов


-1
, для чего потребуется дополнительно завести пользовательскую команду em_SelRaw такого вида

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

SELECTFILES *.jpg>SubDirRaw\*.raw
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Есть набор файлов типа:

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

1.abc
1.def
2.abc
2.def
3.abc
3.def
...
Иногда один из файлов пропадает, то есть получается (если пропал 1.def)

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

1.abc
2.abc
2.def
...
Как найти одинокий, лишенный пары, файл *.abc? Раньше я делал так:

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

SELECTFILES *.def>*.abc
В результате выделяются все файлы, кроме 1.abc. Но это неудобно, и я нажимал "звездочку". Все - цель достигнута: выделен 1.abc.
Вот этот пост sa натолкнул меня на мысль использовать "сцепку команд", то есть

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

SELECTFILES *.def>*.abc;cm_ExchangeSelFiles
Но тогда в результате выделяются все файлы *.def. Мало того, что оно мне не надо, но получается, что результат выполнения двух команд раздельно отличается от выполнения их в сцепке. Почему? Как решить задачу?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Вахмурка
Команду с параметрами (SELECTFILES *.def>*.abc) надо "упрятать" в пользовательскую и уже её использовать в сцепке команд.
P.S.
Разделителем в сцепке должна быть запятая.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Спасибо, заработало. Решение, кстати, нетривиальное. Не напишешь (в ТСКВ, например) статейку по сцепке команд? Я уже тут задал ряд вопросов, но народ реагировал кисло.
Вот еще вопрос. Известно, что файлы hypertext markup language могут иметь разные расширения: htm, html, shtml (может, еще какие есть, но пока остановлюсь). Так вот, в команде SELECTFILES как таковой вот такая маскаработает как часы. А если добавить ">", то увы - отмечаются все *.jpg (изначально было *.html и одноименные *.jpg). Где описаны ограничения на маску после ">"? (до ">" все пучком: команда

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

SELECTFILES *.*htm*>*.jpg
работает правильно)
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Вахмурка
Попробовал команду
SELECTFILES *.*htm*>*.jpg
У меня выделяет, как и положено, только одноимённые с .*htm* файлы .jpg, а не все, как описал ты. Или я не так понял вопрос…

Вот ещё из справки:
New: You can now select related files. For example, you would want to select all RAW image files (.cr2), but only if there is a jpg file in the same directory. This can be done with the following selection string:
*.jpg>*.cr2
This also supports more complex naming schemes. For example, if the jpg file is named IMG_1057.JPG and the raw file CRW_1057.CR2, the selection string would have to be:
*.jpg>crw*.cr2
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Я поставлю вопрос по-другому. Есть файлы:

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

1.htm
1.jpg
2.shtml
2.jpg
3.html
3.jpg
...
То есть много пар, в каждой из которых одноименные *htm* файл (где *htm* - маска), и jpg (а в идеале - jpg или jpeg) файл. Далее, один из файлов исчезает (неважно, как и почему). Задача - найти (выделить) "одинокий" файл ("партнер" пропавшего). Задачу надо решить одной кнопкой для двух случаев: 1) пропал *htm*: 2) пропал jpg.
Это решаемо?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Для первого случая использовать команду

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

SELECTFILES *.*htm*>*.jpg *.jpeg
Для второго (правда без маски, а перечислением)

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

SELECTFILES *.jp*g>*.htm *.html *.shtml
Или одна кнопка должна работать на оба случая?
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Не, ты все понял правильно. Спасибо. Написал бы статью, а?
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Вахмурка писал(а):понял правильно.
Тем не менее одной кнопкой для общего случая тоже можно обойтись, например с помощью утилиты TCFS2:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_temp, cmd,
`LOADSEARCH Дубликаты по имени`) tem(em_temp) eval(send_wait(`{ENTER}`, findwnd(`TFindFile`))) loop(if(findwnd(`TFindFile`)==0, 0, 0*sendmsg(findwnd(`TFindFile`), $104, $30, $1, 1)*delay(1000)+1)) if(findwnd(`TFindFile`)==0,tcm(533,1))"
WCMICONS.DLL,47
Поиск по шаблону "Дубликаты по имени" (с выводом на панель по Alt+0, либо ручками) и сравнение каталогов


-1
Придётся создать шаблон для поиска одноимённых дубликатов.
Здесь он назван Дубликаты по имени и может выглядеть в разделе [searches] файла wincmd.ini примерно так:

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

Дубликаты по имени_SearchFor=
Дубликаты по имени_SearchIn=
Дубликаты по имени_SearchText=
Дубликаты по имени_SearchFlags=0|002002000020|||||||||1011|
Дубликаты по имени_dupeplugins=[=tc.name]
Или по-другому – как кому захочется.
Желательно также переназначение на Alt+0 вывода файлов на панель в окне поиска для независимости от раскладки клавиатуры. Это делается путём правки строки 5664 LNG-файла. Например, таким образом Файлы на панель &0.
В пассивной панели предварительно нужно открыть либо ту же папку, что и в активной, либо подпапку с raw-файлами, как в предыдущей задаче, либо ещё какую-то в зависимости от цели сравнения каталогов.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Вахмурка писал(а):Не напишешь (в ТСКВ, например) статейку по сцепке команд?
О чём писать-то? О том, что при сцепке нельзя использовать команды с параметрами? Так такая поддержка нигде и не была заявлена. Говорилось о внутренних и пользовательских. Из справки:
New functions and fixes in Total Commander 8.50 beta 1:
- Button bar: Support multiple internal and/or user-defined commands on a single button e.g. cm_SelectAll,cm_Copy
Ответить