如何在 Windows 的命令行上访问 MTP 设备?

Pet*_*orf 79 windows command-line mtp

大多数 MTP(媒体传输协议)设备显示在 Windows 文件资源管理器中的设备名称或 GUID 下,但它们没有分配驱动器号。

如何从命令行访问此类设备上的文件?使用 cmd.exe 或 PowerShell。

hai*_*img 32

不幸的是,MTP 公开的 API 与普通文件系统 API 非常不同。因此,将 MTP 设备公开为读/写文件系统是不可能的。主要原因:

维基百科

MTP 和 PTP 标准都不允许直接修改对象。相反,修改后的对象必须全部重新上传,这对于大型对象可能需要很长时间。使用 PTP/MTP,必须在打开阶段就知道文件大小。

您的通用文件复制程序只是打开一个源文件和一个目标文件,然后将数据从源文件分块复制到目标文件。这不适用于 MTP,因为您需要使用 MTP 特殊功能,并且通用文件系统原语(读取、查找、写入)不可用。

还有其他限制。例如,可以在 MTP 设备上同时读取或写入的文件数量受到严重限制。该设备的行为不像文件系统。

我认为MTP 设备的只读文件系统驱动程序可能是可能的,但由于上述问题,它几乎没有用,所以没有人费心去创建它。

  • 实际上,这并非“不可能”。当您考虑到我在 Linux 上将 gphotofs 和 mtpfs 作为 FUSE 文件系统时,它们是*完全* 读/写的-它很有可能在 Windows 下将其作为“驱动器号”来实现……他们只是没有它可用或容易。 (6认同)
  • 只读文件系统驱动程序现在似乎存在:http://ptpdrive.com/ (5认同)

小智 5

有一个专有(但仍然不错)的程序:MTP Drive ( https://www.mtpdrive.com/ ),它允许您将 MTP 设备“挂载”为 Windows 中的驱动器。在一些合理的限制下,它做得很好!

  • 谢谢你,它对我有用!在 python 中: `os.path.exists("Z:\DCIM") == True` 其中 Z 是我分配给手机内存和图片所在 DCIM 的“驱动器”字母。 (2认同)