61

Большинство устройств MTP (Media Transfer Protocol) отображаются в проводнике Windows под своим именем устройства или идентификатором GUID, но им не назначается буква диска.

Как я могу получить доступ к файлам на таких устройствах из командной строки? Использование cmd.exe или PowerShell.

3 ответа3

25

К сожалению, API, предоставляемые MTP, сильно отличаются от API-интерфейсов обычной файловой системы. Поэтому показ устройства MTP как файловой системы для чтения / записи невозможен. Главная причина:

Википедия говорит:

Ни стандарты MTP, ни стандарты PTP не допускают непосредственного изменения объектов. Вместо этого модифицированные объекты должны быть повторно загружены целиком, что может занять много времени для больших объектов. С PTP/MTP размер файла должен быть известен на начальном этапе.

Ваша обычная программа копирования файлов просто открывает исходный и целевой файл и копирует данные в виде фрагментов из исходного файла в целевой. Это не будет работать с MTP, так как вам нужно использовать специальные функции MTP, а общие примитивы файловой системы (чтение, поиск, запись) недоступны.

Есть и другие ограничения. Например, количество файлов, которые могут быть прочитаны или записаны одновременно на устройстве MTP, строго ограничено. Устройство просто не ведет себя как файловая система.

Я полагаю, что драйвер файловой системы только для чтения для устройства MTP может быть возможен, но из-за проблем, описанных выше, он будет очень мало полезен, поэтому никто не удосужился его создать.

1

Есть проприетарная (но все же приятная) программа: MTP Drive (http://www.mtpdrive.com/index.html ), которая позволяет вам "монтировать" устройства MTP как диски в Windows. С некоторыми разумными ограничениями это делает большую работу!

1

Возможно, вам удастся что-то сделать вместе с MTPMon набора для переноса MTP.

Кроме того, PowerShell может создавать COM- объекты и вызывать их методы, поэтому вы можете использовать API-интерфейсы, которые использует Windows Explorer (например, GetDeviceInfo () и GetObjectInfo ()).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .