Как получить доступ к MTP-устройствам из командной строки в Windows?

68

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

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

Питер Хандорф
источник
2
Тот факт, что Linux MTP-совместимые реализации, такие как gphoto2, имеют способ загрузки сценариев, предполагает, что это должно быть как-то возможно в Windows, при условии, что Windows Media Player каким-то образом не блокирует доступ какого-либо другого программного обеспечения к интерфейсу USB MTP ... I тоже хотел бы знать, возможно ли это.
Мокубай
2
Я прекратил попытки найти решение для этого с моим Android-устройством MTP и закончил тем, что установил сервер WebDAV на свое устройство . Это может быть установлено как сетевой диск, хотя и медленно.
Марк Бут
WebDAV ... тьфу ... Это больно. Это будет работать достаточно прилично, хотя. Это ... удивительно ... для меня, что Windows не может управлять тем, что Linux делает из коробки без особых усилий. Ну что ж.
Свартальф
@MarkBooth Я попробовал сервер WebDAV, но кажется, что большинство файлов, которые я передаю, повреждены (более 90%) ...
Michael
Другое решение для Android идет наоборот, настраивая подключенное устройство: 1 , 2 , 3 .
Фредерик

Ответы:

29

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

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

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

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

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

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

haimg
источник
3
Драйвер файловой системы только для чтения, кажется, существует сейчас: ptpdrive.com
Арне де Брюйн,
4
На самом деле, это не «невозможно». Если вы считаете , что у меня есть gphotofs и mtpfs , как FUSE файловые системы на Linux that're ПОЛНОСТЬЮ чтения / отложенной записи его вполне можно сделать это как „буква диска“ под Windows ... они просто не сделал его доступным или просто.
Свартальф
3

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

barbalion
источник
1. Может ли этот синтетический MTP-диск быть использован для общих инструментов восстановления данных, таких как EASEUS / Recuva / R-Studio, и эффективно ли восстанавливать данные? 2. Могу ли я использовать robocopy / другие инструменты быстрой передачи данных для эффективной передачи данных с этого диска на собственные диски Windows (C / D и т. Д.)?
SIslam
1

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

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

Arnshea
источник