среда, 21 октября 2009 г.

Batch

Столкнулся вчера со следующей задачей:
есть папка с отобранными фотографиями в формате jpg;
есть фотоархив, в котором в разветвленной структуре каталогов хранятся те же фотографии, но в формате nef;
задача - найти и скопировать для каждого jpg файла соответствующий nef.
Как оказалось, задача достаточно просто решается с помощью batch скрипта:
del all_nef.txt
del copy_files.bat
del found_files.txt
del files_to_find.txt
dir *.jpg /b >files_to_find.txt
dir D:\*.nef /s /b >all_nef.txt
for /f "eol== delims== tokens=*" %%A in (files_to_find.txt) do type all_nef.txt | find "%%~nA.NEF" >> found_files.txt
for /f "eol== delims== tokens=*" %%A in (found_files.txt) do echo copy %%A . >> copy_files.bat
Первые четыре строчки удаляют временные файлы от предыдущих запусков;
затем в файле files_to_find.txt генерируется список jpg-файлов, для которых нужно найти nef;
затем в файле all_nef.txt генерируется список всех файлов с расширением nef на диске D.
Далее в цикле выбирается по строчке из файла files_to_find.txt, убирается расширение jpg, и добавляется расширение nef. Полученная строка ищется в all_nef.txt, и файл с полным путем добавляется в found_files.txt.
Последняя строка по всем строкам из found_files.txt создает скрипт copy_files.bat для копирования этих файлов в текущий каталог.

Комментариев нет:

Отправить комментарий