imho.ws |
|
31.07.2012, 17:20 | # 1 |
Member
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339
|
Сравнение файлов в папках
Приветствую всех! Ищу оптимальное решение для сравнения файлов в папках по заданным параметрам.
Задача: сравнить большое количество файлов с одинаковыми именами, но с разными расширениями, с разными размерами, в разных директориях, на разных разделах с целью последующей синхронизации этих файлов, причём, в обе стороны - т.е. копирование недостающих или удаление "лишних". Вопрос: какой посоветуете для этой цели файл-менеджер оптимально? Никакие прочие навороты и фишки не нужны вовсе. На всякий случай поясню суть: в архиве есть папка с необработанными RAW(NEF)-файлами и другая папка с обработанными JPEG-файлами на оперативном разделе диска. Чтобы освободить архив от отбракованных и удалённых в процессе обработки файлов, нужно сделать сравнение двух папок по именам файлов и оставшиеся удалить.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами... |
31.07.2012, 18:38 | # 2 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 408
|
Есть всего 2 файл-менеджера, не считая Windows Explorer.
Оба для поставленной задачи одинаково мало подходят, насколь я в курсе (TC не пользуюсь). Я лично обошёлся бы написанием скрипта/комплекта .cmd-скриптов. К примеру, чистка папки с исходниками (как я понял Вашу задачу): Код:
REM задаём рабочие папки set "RAWDIR=d:\RAWDIR" set "JPEGDIR=e:\Jpegdir" REM Проверка существования и доступности папок pushd "%RAWDIR%" ||exit pushd "%JPEGDIR%" && popd || exit REM Удаляем из RAW-папки файлы, для которых нет соответствующего REM (с таким же именем) файла в JPEG-папке for /f "delims=" %%N in ('dir /b *.raw') do call :check "%%N" popd goto :EOF :check if not exist "%JPEGDIR%\%~n1.jpeg" del /q "%1" goto :EOF
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
31.07.2012, 20:24 | # 3 | |
Member
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339
|
Цитата:
Со скриптами понятно, а есть ли решение на основе графического интерфейса? Я, почему-то, был уверен, что с описанной задачей легко справляется какой-либо файл-менеджер, типа ТС или 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'е есть такая возможность или там только сравнение файлов идентичных по типу?
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами... |
|
31.07.2012, 20:49 | # 4 | |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 408
|
Цитата:
Ну, я так и понял. Адаптация скрипта выше под конкретный пример: Код:
REM задаём рабочие папки set "RAWDIR=X:\YYYY.MM.DD Name_of_Event" set "JPEGDIR=Z:\YYYY.MM.DD Name_of_Event" REM Проверка существования и доступности папок pushd "%RAWDIR%" ||exit pushd "%JPEGDIR%" && popd || exit REM Удаляем из RAW-папки файлы, для которых нет соответствующего REM (с таким же именем) файла в JPEG-папке for /f "delims=" %%N in ('dir /b *.nef') do call :check "%%N" popd goto :EOF :check if not exist "%JPEGDIR%\%~n1.jpg" del /q "%1" goto :EOF На всякий - в редакторе Far Manager есть очень удобная фишка: вставка по "Ctrl-Shift-[" текущего пути в активной вкладке и по "Ctrl-Shift-]" текущего пути в неактивной вкладке (это к вопросу о редактировании имён папок). Причём в любой момент можно переключиться из редактора на панели (по Ctrl-tab) и обратно. Да, на всякий - скрипт ничего не спрашивает и не помечает, он именно удаляет, сразу и не задавая вопросов. Именно потому в него и вставлена проверка на доступность обоих заданных папок, и безусловное прекращение выполнения при недоступности любой из них.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
|
01.08.2012, 14:18 | # 5 |
Member
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339
|
Borland, правильно ли я понял, что от меня требуется лишь менять пути X:\YYYY.MM.DD Name_of_Event и Z:\YYYY.MM.DD Name_of_Event ? Ничего другого менять не нужно?
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами... |
01.08.2012, 15:35 | # 6 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 408
|
Правильно.
Разве что захочется приспособить для других пар файлов (вместо nef/jpg, к примеру, raw/png) - тогда надо будет ещё и расширения поменять в 11-й и 16-й строках соответственно.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
01.08.2012, 15:56 | # 7 |
Member
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339
|
Borland, спасибо! Попробую и отпишу о результате.
UPD. Полевые испытания прошли успешно, на данный момент освобождено свыше 20 ГБ дискового пространства. Ещё раз большое спасибо! Напрягает, разве что, ручное вбивание путей папок, вот если бы можно было просто выбирать их, как в окнах файл-менеджера... Возможно ли в будущем придать этому скрипту граф. фейс? Мне кажется, прога была бы востребована среди фотографов.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами... Последний раз редактировалось Bayer; 01.08.2012 в 16:24. |
01.08.2012, 20:11 | # 8 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 408
|
"Невозможное возможно если верить в чудеса"
Можно прикрутить к менюхе Far Manager команду "обработать отмеченные папки". process.cmd Код:
set "RAWDISK=X:\" set "JPGDISK=Y:\" if /I "%CD%" neq "%RAWDISK%" exit pushd "%RAWDISK%%~1" ||exit pushd "%JPGDISK%%~1" && popd || exit for /f "delims=" %%N in ('dir /b *.nef') do call :check "%%N" "%~1" set "RAWDISK=" set "JPGDISK=" popd goto :EOF :check if not exist "%JPGDISK%%~2\%~n1.jpg" del /q "%~1" goto :EOF Рядом кладём farmenu.ini Код:
C: Compare&Clean for /f "delims=" %A in (!@!) do call process.cmd "%~A" Дальше можно вызывать process.cmd непосредственно в формате Код:
process.cmd "Имя обрабатываемой папки" Либо помечаем в панели FAR папки для обработки (на RAW-диске), вызываем меню FAR (кнопкой F2), выбираем пункт "Compare&Clean" и ждём пока остынет. Этот же process.cmd технически несложно прикрутить и в контекстное меню того же Win Explorer, но ТАКОГО я лично делать не собираюсь и другим не советую. Это не программа, это скрипт... В этом варианте требуется точное совпадение имён проверяемых папок с RAW и JPG и их нахождение в корне соответствующих дисков. Писать под это программу - неинтересно. Она будет либо существенно сложнее чем кажется - либо никому, по большому счёту, не потребуется... P.S. Совсем уже хак - вывод команд обработки можно перенаправить в встроенный редактор FAR, слегка изменив farmenu.ini: Код:
C: Compare&Clean edit: <for /f "delims=" %A in (!@!) do call process.cmd "%~A"
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий Последний раз редактировалось Borland; 01.08.2012 в 21:14. Причина: Многократные правки... |
02.08.2012, 07:18 | # 9 |
Newbie
Регистрация: 16.07.2012
Адрес: Boston, MA
Пол: Male
Сообщения: 4
|
Можно плагин для фара написать.
Такой уже есть ( http://plugring.farmanager.com/plugin.php?pid=19&l=ru ), но он под старый фар. P.S. Я не тестировал, так что ответственности не несу. |
02.08.2012, 12:32 | # 10 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 408
|
Это не проще, чем программу.
Под линейкой 1.x должен работать как минимум до версии 1.70. Но, ИМХО, скрипты проще в применении и гибче.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
14.11.2012, 18:38 | # 11 |
Guest
Сообщения: n/a
|
я решил проблему следующим образом:
total commander 8.01 обработанные jpg слева, исходники справа исходники временно переименовываем в jpg : F6 *.jpg далее synchronize directories/asymmetric/compare проверить все, файлы со значком неравно тронуты не будут далее synchronize затем оставшиеся исходники справа переименовываем обратно |
15.11.2012, 00:48 | # 12 |
Member
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339
|
grom1300, это изначально самое предсказуемое, но очень неудобное решение. Скрипт от Borland-а гораздо удобней. На мой взгляд, разумеется.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами... |
Теги (метки) |
bat, cmd, far manager, jpeg, raw |
|
|