imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Программы и Операционные системы > Обсуждение программ
Опции темы
Старый 31.07.2012, 17:20     # 1
Bayer
Member
 
Аватар для Bayer
 
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339

Bayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собой
Сравнение файлов в папках

Приветствую всех! Ищу оптимальное решение для сравнения файлов в папках по заданным параметрам.

Задача: сравнить большое количество файлов с одинаковыми именами, но с разными расширениями, с разными размерами, в разных директориях, на разных разделах с целью последующей синхронизации этих файлов, причём, в обе стороны - т.е. копирование недостающих или удаление "лишних".

Вопрос: какой посоветуете для этой цели файл-менеджер оптимально?
Никакие прочие навороты и фишки не нужны вовсе.

На всякий случай поясню суть: в архиве есть папка с необработанными RAW(NEF)-файлами и другая папка с обработанными JPEG-файлами на оперативном разделе диска. Чтобы освободить архив от отбракованных и удалённых в процессе обработки файлов, нужно сделать сравнение двух папок по именам файлов и оставшиеся удалить.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами...
Bayer вне форума  
Старый 31.07.2012, 18:38     # 2
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 382

Borland - Гад и сволочь
Есть всего 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
Синхронизация - команды xcopy, robocopy и многое другое. С написанием скриптов поможем, если вы чётко сформулируете алгоритмы - что по каким критериям сравнивать и копировать.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 31.07.2012, 20:24     # 3
Bayer
Member
 
Аватар для Bayer
 
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339

Bayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собой
Цитата:
Сообщение от Borland Посмотреть сообщение
С написанием скриптов поможем, если вы чётко сформулируете алгоритмы - что по каким критериям сравнивать и копировать.
Подход серьёзный, я ожидал чего-то попроще, спасибо

Со скриптами понятно, а есть ли решение на основе графического интерфейса? Я, почему-то, был уверен, что с описанной задачей легко справляется какой-либо файл-менеджер, типа ТС или 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'е есть такая возможность или там только сравнение файлов идентичных по типу?
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами...
Bayer вне форума  
Старый 31.07.2012, 20:49     # 4
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 382

Borland - Гад и сволочь
Цитата:
Сообщение от Bayer Посмотреть сообщение
В ТС или Far'е есть такая возможность или там только сравнение файлов идентичных по типу?
Там сравнение с учётом типа. Точнее - полного имени файла (имя+расширение). Т.е. объяснить ему, что jpeg и nef это одно и то же - не удастся, без вариантов (насколько мне известно).
Цитата:
Сообщение от Bayer Посмотреть сообщение
Пример:...
Ну, я так и понял.
Адаптация скрипта выше под конкретный пример:
Код:
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) и обратно.
Да, на всякий - скрипт ничего не спрашивает и не помечает, он именно удаляет, сразу и не задавая вопросов. Именно потому в него и вставлена проверка на доступность обоих заданных папок, и безусловное прекращение выполнения при недоступности любой из них.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 01.08.2012, 14:18     # 5
Bayer
Member
 
Аватар для Bayer
 
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339

Bayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собой
Borland, правильно ли я понял, что от меня требуется лишь менять пути X:\YYYY.MM.DD Name_of_Event и Z:\YYYY.MM.DD Name_of_Event ? Ничего другого менять не нужно?
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами...
Bayer вне форума  
Старый 01.08.2012, 15:35     # 6
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 382

Borland - Гад и сволочь
Правильно.
Разве что захочется приспособить для других пар файлов (вместо nef/jpg, к примеру, raw/png) - тогда надо будет ещё и расширения поменять в 11-й и 16-й строках соответственно.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 01.08.2012, 15:56     # 7
Bayer
Member
 
Аватар для Bayer
 
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339

Bayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собой
Borland, спасибо! Попробую и отпишу о результате.

UPD.
Полевые испытания прошли успешно, на данный момент освобождено свыше 20 ГБ дискового пространства.
Ещё раз большое спасибо!

Напрягает, разве что, ручное вбивание путей папок, вот если бы можно было просто выбирать их, как в окнах файл-менеджера...
Возможно ли в будущем придать этому скрипту граф. фейс? Мне кажется, прога была бы востребована среди фотографов.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами...

Последний раз редактировалось Bayer; 01.08.2012 в 16:24.
Bayer вне форума  
Старый 01.08.2012, 20:11     # 8
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 382

Borland - Гад и сволочь
Цитата:
Сообщение от Bayer Посмотреть сообщение
Возможно ли
"Невозможное возможно если верить в чудеса"
Можно прикрутить к менюхе 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
Кладём его в корень (очищаемого) диска с RAW-файлами.
Рядом кладём farmenu.ini
Код:
C:  Compare&Clean
    for /f "delims=" %A in (!@!) do call process.cmd "%~A"
В .cmd меняем соответственно буквы дисков (обязательно в верхнем регистре).
Дальше можно вызывать process.cmd непосредственно в формате
Код:
process.cmd "Имя обрабатываемой папки"
(На всякий - в FAR вставка в командную строку имени текущего объекта под курсором делается по Ctrl-Enter).

Либо помечаем в панели 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. Причина: Многократные правки...
Borland вне форума  
Старый 02.08.2012, 07:18     # 9
FiL
Newbie
 
Регистрация: 16.07.2012
Адрес: Boston, MA
Пол: Male
Сообщения: 4

FiL Нимб уже пробиваетсяFiL Нимб уже пробивается
Можно плагин для фара написать.
Такой уже есть ( http://plugring.farmanager.com/plugin.php?pid=19&l=ru ), но он под старый фар.

P.S. Я не тестировал, так что ответственности не несу.
FiL вне форума  
Старый 02.08.2012, 12:32     # 10
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 382

Borland - Гад и сволочь
Цитата:
Сообщение от FiL Посмотреть сообщение
Можно плагин для фара написать.
Это не проще, чем программу.

Цитата:
Сообщение от FiL Посмотреть сообщение
он под старый фар
Под линейкой 1.x должен работать как минимум до версии 1.70.

Но, ИМХО, скрипты проще в применении и гибче.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 14.11.2012, 18:38     # 11
grom1300
Guest
 
Сообщения: n/a

я решил проблему следующим образом:

total commander 8.01
обработанные jpg слева, исходники справа
исходники временно переименовываем в jpg : F6 *.jpg
далее
synchronize directories/asymmetric/compare
проверить все, файлы со значком неравно тронуты не будут
далее
synchronize
затем оставшиеся исходники справа переименовываем обратно
 
Старый 15.11.2012, 00:48     # 12
Bayer
Member
 
Аватар для Bayer
 
Регистрация: 28.11.2001
Адрес: Бавария
Пол: Male
Сообщения: 339

Bayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собойBayer Имеются все основания чтобы гордиться собой
grom1300, это изначально самое предсказуемое, но очень неудобное решение. Скрипт от Borland-а гораздо удобней. На мой взгляд, разумеется.
__________________
Бывают в жизни минуты, когда всё решают секунды... И длится это - часами...
Bayer вне форума  

Теги (метки)
bat, cmd, far manager, jpeg, raw


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 14:54.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.