ほとんどのMTP(メディア転送プロトコル)デバイスは、デバイス名またはGUIDでWindowsファイルエクスプローラーに表示されますが、ドライブ文字は割り当てられていません。
このようなデバイス上のファイルにコマンドラインからアクセスするにはどうすればよいですか?cmd.exeまたはPowerShellを使用します。
ほとんどのMTP(メディア転送プロトコル)デバイスは、デバイス名またはGUIDでWindowsファイルエクスプローラーに表示されますが、ドライブ文字は割り当てられていません。
このようなデバイス上のファイルにコマンドラインからアクセスするにはどうすればよいですか?cmd.exeまたはPowerShellを使用します。
回答:
残念ながら、MTPによって公開されるAPIは、通常のファイルシステムAPIとは大きく異なります。したがって、MTPデバイスを読み取り/書き込みファイルシステムとして公開することはできません。主な理由:
ウィキペディアによると:
MTP標準もPTP標準も、オブジェクトの直接変更を許可していません。代わりに、変更されたオブジェクト全体を再アップロードする必要があり、大きなオブジェクトの場合は時間がかかることがあります。PTP / MTPでは、ファイルサイズはオープニングステージで認識されている必要があります。
共通ファイルコピープログラムは、ソースファイルとターゲットファイルを開き、ソースファイルからターゲットにチャンクでデータをコピーします。MTPの特別な機能を使用する必要があり、汎用ファイルシステムプリミティブ(読み取り、シーク、書き込み)が利用できないため、これはMTPでは機能しません。
他にも制限があります。たとえば、MTPデバイスで同時に読み取りまたは書き込みが可能なファイルの数は非常に制限されています。デバイスは単にファイルシステムのように動作しません。
私は考え読み取り専用 MTPデバイスのファイルシステムドライバは可能かもしれませんが、理由は上記概説した問題で、それは非常にほとんど使用されますので、誰もがそれを作成するために気にしません。
MTPドライブ(http://www.mtpdrive.com/index.html)は、MTPデバイスをWindowsのドライブとして「マウント」できるようにする、独自の(しかしまだ素晴らしい)プログラムがあります。いくつかの合理的な制限がありますが、素晴らしい仕事をします!
MTPポーティングキットのMTPMonを使用して、何かをまとめることができる場合があります。
または、PowerShellはCOMオブジェクトを作成してそのメソッドを呼び出すことができるため、Windows Explorerが使用しているAPI(たとえば、GetDeviceInfo()やGetObjectInfo())を使用できる場合があります。