web-dev-qa-db-ja.com

WindowsのコマンドラインでMTPデバイスにアクセスする方法

ほとんどのMTP( メディア転送プロトコル )デバイスは、Windowsファイルエクスプローラーのデバイス名またはGUIDで表示されますが、ドライブ名は割り当てられていません。 。

コマンドラインからそのようなデバイス上のファイルにアクセスするにはどうすればよいですか。 cmd.exeまたはPowerShellを使用します。

62
Peter Hahndorf

残念ながら、MTPによって公開されているAPIは、通常のファイルシステムAPIとは大きく異なります。したがって、MTPデバイスを読み取り/書き込みファイルシステムとして公開することはできません。主な理由:

ウィキペディア を言っています。

MTP規格もPTP規格も、オブジェクトの直接変更を許可していません。代わりに、変更されたオブジェクトは全体として再アップロードされなければならず、ラージオブジェクトの場合は長い時間がかかる可能性があります。 PTP/MTPでは、ファイルサイズは開始段階でわかっている必要があります。

一般的なファイルコピープログラムは、ソースファイルとターゲットファイルを開いて、ソースファイルからターゲットにデータをまとめてコピーします。 MTP特殊機能を使用する必要があり、一般的なファイルシステムプリミティブ(read、seek、write)が使用できないため、これはMTPでは機能しません。

他にも制限があります。たとえば、MTPデバイス上で同時に読み書きできるファイルの数は非常に限られています。デバイスは単にファイルシステムのようには動作しません。

MTPデバイス用の読み取り専用ファイルシステムドライバが可能かもしれないと思いますが、上で概説した問題のためにそれはほとんど役に立たないので、誰もそれを作成することに煩わされません。

26
haimg

独自の(それでも素晴らしい)プログラムがあります。MTP Drive( http://www.mtpdrive.com/index.html )。 Windowsでドライブします。いくつかの合理的な制限はありますが、それは素晴らしい仕事です。

2
barbalion

あなたはMTP移植キットのMTPMonと一緒に何かを石畳することができるかもしれません。

あるいは、 PowerShellCOM オブジェクトを作成してそれらのメソッドを呼び出すことができます。そのため、Windowsエクスプローラが使用しているAPI(たとえば、GetDeviceInfo()やGetObjectInfo())を使用できる可能性があります。

1
Arnshea