Сравнение файлов в папках
Приветствую всех! Ищу оптимальное решение для сравнения файлов в папках по заданным параметрам.
Задача: сравнить большое количество файлов с одинаковыми именами, но с разными расширениями, с разными размерами, в разных директориях, на разных разделах с целью последующей синхронизации этих файлов, причём, в обе стороны - т.е. копирование недостающих или удаление "лишних". Вопрос: какой посоветуете для этой цели файл-менеджер оптимально? Никакие прочие навороты и фишки не нужны вовсе. На всякий случай поясню суть: в архиве есть папка с необработанными RAW(NEF)-файлами и другая папка с обработанными JPEG-файлами на оперативном разделе диска. Чтобы освободить архив от отбракованных и удалённых в процессе обработки файлов, нужно сделать сравнение двух папок по именам файлов и оставшиеся удалить. |
Есть всего 2 файл-менеджера, не считая Windows Explorer. :gigi:
Оба для поставленной задачи одинаково мало подходят, насколь я в курсе (TC не пользуюсь). Я лично обошёлся бы написанием скрипта/комплекта .cmd-скриптов. К примеру, чистка папки с исходниками (как я понял Вашу задачу): Код:
REM задаём рабочие папки |
Цитата:
Со скриптами понятно, а есть ли решение на основе графического интерфейса? Я, почему-то, был уверен, что с описанной задачей легко справляется какой-либо файл-менеджер, типа ТС или Far'a, только мне до сих пор не известно, каким образом. А как ещё чётче сформулировать алгоритм, я не очень представляю... 1. Есть архивный ЖД с директориями сортированных по дате съёмок вида YYYY.MM.DD Name_of_Event, куда сливается сырой материал сразу после съёмки. 2. Есть оперативный ЖД с точно так же сортированными директориями с сырым материалом. Отсюда файлы берутся для обработки. 3. Есть оперативный ЖД с точно так же сортированными директориями, но уже с готовым, обработанным материалом. По результатам обработки, я хочу удалить с архивного ЖД, из актуальной в данный момент директории те файлы, которые были удалены в процессе обработки с оперативного ЖД, т.е. те, которых нет в директории с готовым, обработанным материалом. Пример: - сравнить папки X:\YYYY.MM.DD Name_of_Event\с файлами *.NEF и Z:\YYYY.MM.DD Name_of_Event\с файлами *.JPG только по именам файлов, без учёта всех прочих параметров. - автоматически выделить разницу, т.е. те файлы (NEF), которых нет в конечной папке (JPG) Далее - удаление автоматически или в ручную, не существенно. В ТС или Far'е есть такая возможность или там только сравнение файлов идентичных по типу? |
Цитата:
Цитата:
Адаптация скрипта выше под конкретный пример: Код:
REM задаём рабочие папки На всякий - в редакторе Far Manager есть очень удобная фишка: вставка по "Ctrl-Shift-[" текущего пути в активной вкладке и по "Ctrl-Shift-]" текущего пути в неактивной вкладке (это к вопросу о редактировании имён папок). Причём в любой момент можно переключиться из редактора на панели (по Ctrl-tab) и обратно. ;) Да, на всякий - скрипт ничего не спрашивает и не помечает, он именно удаляет, сразу и не задавая вопросов. Именно потому в него и вставлена проверка на доступность обоих заданных папок, и безусловное прекращение выполнения при недоступности любой из них. |
Borland, правильно ли я понял, что от меня требуется лишь менять пути X:\YYYY.MM.DD Name_of_Event и Z:\YYYY.MM.DD Name_of_Event ? Ничего другого менять не нужно?
|
Правильно.
Разве что захочется приспособить для других пар файлов (вместо nef/jpg, к примеру, raw/png) - тогда надо будет ещё и расширения поменять в 11-й и 16-й строках соответственно. |
Borland, спасибо! Попробую и отпишу о результате.
UPD. Полевые испытания прошли успешно, на данный момент освобождено свыше 20 ГБ дискового пространства. Ещё раз большое спасибо! Напрягает, разве что, ручное вбивание путей папок, вот если бы можно было просто выбирать их, как в окнах файл-менеджера... Возможно ли в будущем придать этому скрипту граф. фейс? Мне кажется, прога была бы востребована среди фотографов. |
Цитата:
Можно прикрутить к менюхе Far Manager команду "обработать отмеченные папки". process.cmd Код:
set "RAWDISK=X:\" Рядом кладём farmenu.ini Код:
C: Compare&Clean Дальше можно вызывать process.cmd непосредственно в формате Код:
process.cmd "Имя обрабатываемой папки" Либо помечаем в панели FAR папки для обработки (на RAW-диске), вызываем меню FAR (кнопкой F2), выбираем пункт "Compare&Clean" и ждём пока остынет. :gigi: Этот же process.cmd технически несложно прикрутить и в контекстное меню того же Win Explorer, но ТАКОГО я лично делать не собираюсь и другим не советую. Это не программа, это скрипт...;) В этом варианте требуется точное совпадение имён проверяемых папок с RAW и JPG и их нахождение в корне соответствующих дисков. Писать под это программу - неинтересно. Она будет либо существенно сложнее чем кажется - либо никому, по большому счёту, не потребуется... P.S. Совсем уже хак :gigi: - вывод команд обработки можно перенаправить в встроенный редактор FAR, слегка изменив farmenu.ini: Код:
C: Compare&Clean |
Можно плагин для фара написать.
Такой уже есть ( http://plugring.farmanager.com/plugin.php?pid=19&l=ru ), но он под старый фар. P.S. Я не тестировал, так что ответственности не несу. |
Цитата:
Цитата:
Но, ИМХО, скрипты проще в применении и гибче. :gigi: |
я решил проблему следующим образом:
total commander 8.01 обработанные jpg слева, исходники справа исходники временно переименовываем в jpg : F6 *.jpg далее synchronize directories/asymmetric/compare проверить все, файлы со значком неравно тронуты не будут далее synchronize затем оставшиеся исходники справа переименовываем обратно |
grom1300, это изначально самое предсказуемое, но очень неудобное решение. Скрипт от Borland-а гораздо удобней. На мой взгляд, разумеется.
|
Часовой пояс GMT +4, время: 10:04. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.