¿Cómo accedo a dispositivos MTP en la línea de comandos en Windows?

68

La mayoría de los dispositivos MTP ( Protocolo de transferencia de medios ) aparecen en el Explorador de archivos de Windows con su nombre de dispositivo o un GUID, pero no tienen asignada una letra de unidad.

¿Cómo puedo acceder a los archivos en dichos dispositivos desde la línea de comandos? Usando cmd.exe o PowerShell.

Peter Hahndorf
fuente
2
El hecho de que las implementaciones compatibles con Linux MTP como gphoto2 tengan una forma de cargar secuencias de comandos sugiere que esto debería ser posible de alguna manera en Windows, suponiendo que Windows Media Player de alguna manera no bloquee ningún otro software para acceder a la interfaz USB MTP ... También me gustaría saber si esto es posible.
Mokubai
2
Dejé de intentar encontrar una solución para esto con mi dispositivo Android MTP y terminé instalando un servidor WebDAV en mi dispositivo . Esto podría montarse como una unidad de red, aunque lentamente.
Mark Booth
WebDAV ... ugh ... Eso es doloroso. Sin embargo, funcionaría lo suficientemente decente. Es ... sorprendente ... para mí que Windows parece no poder administrar lo que Linux hace sin esfuerzo. Oh bien.
Svartalf
@ MarkBooth Probé el servidor WebDAV pero parece que la mayoría de los archivos que transfiero están corruptos (más del 90%) ...
Michael
Otra solución para Android que va al revés, ajustando el dispositivo conectado: 1 , 2 , 3 .
Frédéric

Respuestas:

29

Desafortunadamente, las API expuestas por MTP son muy diferentes de las API normales de un sistema de archivos. Por lo tanto, no es posible exponer el dispositivo MTP como un sistema de archivos de lectura / escritura . La razón principal:

Wikipedia dice :

Ni los estándares MTP ni PTP permiten la modificación directa de objetos. En cambio, los objetos modificados se deben volver a cargar en su totalidad, lo que puede llevar mucho tiempo para objetos grandes. Con PTP / MTP, el tamaño del archivo debe conocerse en la etapa inicial.

Su programa común de copia de archivos solo abre un archivo de origen y uno de destino, y copia datos en fragmentos del archivo de origen al destino. Esto no funcionará con MTP, ya que necesita usar funciones especiales de MTP, y las primitivas genéricas del sistema de archivos (lectura, búsqueda, escritura) no están disponibles.

También hay otras limitaciones. Por ejemplo, el número de archivos que se pueden leer o escribir simultáneamente en un dispositivo MTP está muy limitado. El dispositivo simplemente no se comporta como un sistema de archivos.

Supongo que el controlador del sistema de archivos de solo lectura para un dispositivo MTP podría ser posible, pero debido a los problemas descritos anteriormente, será de muy poca utilidad, por lo que nadie se molestó en crearlo.

haimg
fuente
3
El controlador del sistema de archivos de solo lectura parece existir ahora: ptpdrive.com
Arne de Bruijn
44
En realidad, no es "imposible". Cuando considera que tengo gphotofs y mtpfs como sistemas de archivos FUSE en Linux que son COMPLETAMENTE Lectura / Escritura, es bastante posible lograr esto como una "letra de unidad" en Windows ... simplemente no lo han hecho disponible o fácil
Svartalf
3

Hay un programa propietario (pero aún agradable): Unidad MTP ( http://www.mtpdrive.com/index.html ) que le permite "montar" dispositivos MTP como unidades en Windows. ¡Con algunas limitaciones razonables, hace el gran trabajo!

barbalion
fuente
1. ¿Se puede alimentar ese disco MTP sintético a herramientas comunes de recuperación de datos del disco como EASEUS / Recuva / R-Studio y los datos se pueden recuperar de manera eficiente? 2. ¿Puedo usar robocopy / otras herramientas rápidas de transferencia de datos para transferir datos de esa unidad a unidades nativas de Windows (C / D, etc.) de manera eficiente?
SIslam
1

Es posible que pueda improvisar algo junto con el MTPMon del kit de transferencia MTP.

Alternativamente, PowerShell puede crear objetos COM y llamar a sus métodos, por lo que puede usar las API que está utilizando el Explorador de Windows (por ejemplo, GetDeviceInfo () y GetObjectInfo ()).

Arnshea
fuente