adb pullのコピー先はどこ?


ちょっと嵌ったのでメモ。
adb pull のコピー先が予想外の場所になるケースがあるという話。


エミュレータ内のファイルをホストマシンへコピーするには、adb pull コマンドを使う。
構文は以下のような感じ。

adb pull <エミュレータ内のコピー元ファイル> <コピー先ファイル>


たとえば、エミュレータのSDカードのルートにある test.txt をホストにコピーするには、以下のようにすれば良いのだが…

cd "C:\Program Files (x86)\Android\android-sdk\platform-tools"
adb pull /sdcard/text.txt text.txt


android-sdkインストーラでインストールしたウチの環境(Windows 7 64bit)では、上記のパスにadbコマンドがある。このため、パスを通してなかった頃は上記のように cd で移動してから、adb コマンドを実行していた。
しかし、この場合、何故かカレントディレクトリにはファイル test.txt が生成されず、以下の場所に生成される。

C:\Users\ユーザ名\AppData\Local\VirtualStore\Program Files (x86)\Android\android-sdk\platform-tools


ただし、adbまでパスを通しておいた状態で、コマンドプロンプト起動直後に以下だけを実行すると、ちゃんとカレントディレクトリ(この場合は、C:\Users\ユーザ名)にファイルが生成される。

adb pull /sdcard/text.txt text.txt


何故カレントディレクトリにコピーされないことがあるのかは不明。


インストーラでインストールした場合のsdkのインストール先には変なファイル権限が付加されていたので(Program Files 配下だからかも?)、それが原因でカレントにファイルが生成できず、別の場所に作成される……のだろうか?


まあ、コマンドへパスを通しておけば問題はないのだが。
ちなみに、コピー先のファイル名を ./text.txt としても結果は変わらなかった。