Я хочу полуавтоматически копировать и классифицировать файлы DCIM со своего iPhone на мой компьютер, храня вместе "связанные" изображения камеры и отдельно от скриншотов, загруженных файлов JPEG, GIF, MPEG, PNG и т.д.
На моем iPhone у меня есть куча загруженных изображений (из Pinterest, Tumblr и т.д.). У меня также есть куча связанных изображений jpg/mp4, сделанных камерой iPhone, которые находятся в связанных парах, одна за другой в порядке имен файлов. Очевидно, что камера iPhone записывает как JPEG-изображение, так и многокадровый MP4-фильм для каждого снятого изображения. Загруженные изображения - только отдельные JPEG, GIF, MP4 и т.д.
Я хотел бы, чтобы скрипт находился на локальном компьютере и запускался вручную после того, как iPhone был смонтирован.
Пути к изображениям iPhone:«mtp:// iPhone Скотта / Внутренняя память / DCIM / 291APPLE», «mtp:// iPhone Скотта / Внутренняя память / DCIM / 292APPLE», «mtp:// iPhone Скотта / Внутренняя память / DCIM» / 293APPLE 'и т.д.
У меня нет контроля над именами подкаталогов (такими как 291APPLE, 292APPLE, 293APPLE и т.д., Но они всегда начинаются с (на первый взгляд случайного) трехзначного числа и всегда заканчиваются на "APPLE". Там может быть один или десять. Это зависит только от iOS и количества файлов. Подкаталоги доступны только для чтения, но сами файлы предназначены для чтения и записи, поэтому их можно удалить позже.
Итак, мне нужно рекурсивно работать со всеми файлами вплоть до «mtp:// iPhone Скотта / Внутреннее хранилище / DCIM /».
Список каталогов в каждой подпапке на iPhone выглядит примерно так:
*image001.jpg* <-- downloaded
*image002.jpg* <-- downloaded
*image003.jpg* <-- camera image a
*image004.mp4* <-- camera image b
*image005.jpg* <-- downloaded
*image006.jpg* <-- downloaded
*image007.jpg* <-- downloaded
*image008.jpg* <-- downloaded
*image009.jpg* <-- camera image a
*image010.mp4* <-- camera image b
*image011.jpg* <-- downloaded
Таким образом, файлы 003 и 004 связаны, а файлы 009 и 010 связаны. Все файлы в iPhone/DCIM/* Скотта имеют уникальные имена.
Я хотел бы скопировать только связанные изображения в каталог A, а остальные изображения (загружаемые файлы любого типа: jpg, gif, mp4 и т.д.) В каталог B.
Может ли кто-нибудь помочь с логикой и кодом Powershell, которые сделали бы это возможным? Я действительно не знаю, как этого добиться. Может быть, есть лучший способ или утилита, которую кто-то уже написал? Если так, я был не в состоянии найти это, и иметь дело с сотнями изображений за один раз действительно утомительно. Это похоже на идеальное приложение для Powershell.
Я думаю, что мне нужно перебрать файлы, определить первый файл * .mp4, поместить имя файла в переменную, скопировать файл * .mp4 в каталог A, а затем вычесть значение 1 из переменной, чтобы соответствовать предыдущему связанному * .jpg имя файла в алфавитном порядке и скопировать его в каталог А.
Промыть и повторить.
Затем скопируйте оставшиеся несвязанные файлы (любого типа) в каталог B.
Итак, в итоге у меня следующая структура каталогов:
On the iPhone:
(leave the original files as is)
Directory A
image003.jpg <-- camera image a
image004.mp4 <-- camera image b
image009.jpg <-- camera image a
image010.mp4 <-- camera image b
Directory B
image001.jpg <-- downloaded
image002.jpg <-- downloaded
image005.jpg <-- downloaded
image006.jpg <-- downloaded
image007.jpg <-- downloaded
image008.jpg <-- downloaded
image011.jpg <-- downloaded
Наконец, спросите пользователя, хотят ли они удалить оригиналы iPhone (я могу обработать эту часть, я думаю), но не каталоги iPhone (проблема разрешений, упомянутая выше ... iOS заботится о структуре каталогов).
Думаю, есть одна проблема: загруженный фильм, заканчивающийся * .mp4, будет сопоставлен с несвязанным файлом * .jpg, который был загружен только ранее. Если у кого-то нет элегантного способа справиться с этим. Я могу жить с этим небольшим ограничением. Я заметил, что связанные файлы jpg/mp4 имеют одинаковую метку времени hh: ss, если это поможет. Загруженные изображения / фильмы / гифки никогда не совпадают по времени. Может быть, сопоставить метки времени проще? Не знаю, как этого добиться.
Меня действительно смущает обработка переменных имени файла, математической логики -1 при работе с именами файлов и способов обработки оставшихся имен файлов (в массиве или с помощью итераций?). Копирование, перемещение, сопоставление имен и т.д. Я думаю, что могу работать методом проб и ошибок, но не стесняйтесь уточнять. То, что некоторые могут сделать на лету, занимает у меня часы, часто заканчиваясь неудачей и разочарованием :-(
Кто-нибудь может помочь? Мои навыки Powershell примерно до 3-й главы, так что я действительно изо всех сил.