SDカードに次のフォルダーがあります:/mnt/sdcard/Folder1/Folder2/Folder3/*.jpg
Folder1とFolder2の名前は一定のままで、Folder2の内部にはFolder3、4、5などがあります。adbを使用してすべてのファイル(もっとあります)をコンピューターの現在のディレクトリにプルします。
すべてのフォルダーには異なる数のjpegファイルと他のファイルがあり、これを使用してみました:
adb pull mnt/sdcard/Folder1/Folder2/Folder/*.jpg .
しかし、うまくいきませんでした。だから、私はadbがSDカードの任意のフォルダに存在するすべてのファイルを単一のコマンド(各フォルダのファイル数が異なるため単一コマンド)でどのようにプルしますか
pull
を使用する単一のファイル/フォルダー:adb pull "/sdcard/Folder1"
出力:
adb pull "/sdcard/Folder1"
pull: building file list...
pull: /sdcard/Folder1/image1.jpg -> ./image1.jpg
pull: /sdcard/Folder1/image2.jpg -> ./image2.jpg
pull: /sdcard/Folder1/image3.jpg -> ./image3.jpg
3 files pulled. 0 files skipped.
find
からBusyBox
を使用する特定のファイル/フォルダー:adb Shell find "/sdcard/Folder1" -iname "*.jpg" | tr -d '\015' | while read line; do adb pull "$line"; done;
説明は次のとおりです。
adb Shell find "/sdcard/Folder1" - use the find command, use the top folder
-iname "*.jpg" - filter the output to only *.jpg files
| - passes data(output) from one command to another
tr -d '\015' - explained here: http://stackoverflow.com/questions/9664086/bash-is-removing-commands-in-while
while read line; - while loop to read input of previous commands
do adb pull "$line"; done; - pull the files into the current running directory, finish. The quotation marks around $line are required to work with filenames containing spaces.
スクリプトは最上位フォルダーで開始され、再帰的に下に移動してすべての「* .jpg」ファイルを検索し、それらを電話から現在のディレクトリにプルします。
ディレクトリプルは、新しいAndroidツールで利用できます。 (どのバージョンから追加されたのかわかりませんが、最新のADT 21.1で動作します)
adb pull /sdcard/Robotium-Screenshots
pull: building file list...
pull: /sdcard/Robotium-Screenshots/090313-110415.jpg -> ./090313-110415.jpg
pull: /sdcard/Robotium-Screenshots/090313-110412.jpg -> ./090313-110412.jpg
pull: /sdcard/Robotium-Screenshots/090313-110408.jpg -> ./090313-110408.jpg
pull: /sdcard/Robotium-Screenshots/090313-110406.jpg -> ./090313-110406.jpg
pull: /sdcard/Robotium-Screenshots/090313-110404.jpg -> ./090313-110404.jpg
5 files pulled. 0 files skipped.
61 KB/s (338736 bytes in 5.409s)
Sdcardからファイルを取得したばかりのファイルを取得したい場所からのパスを指定してみてください
adb pull sdcard/
検索を広げたり、除外したりするために*を与えないでください。例:adb pull sdcard/*。txt->これは無効です。
adb pull sdcard /を与えるだけです
うん、最後のスラッシュを使用して、再帰的にディレクトリをプルします。 Nexus 5と現在のバージョンのadb(2014年3月)で動作します。
ADBバージョン1.0.32のAndroid 6では、コピーするフォルダーの後ろに配置する必要があります。例:adb pull "/sdcard/".
jellybeanを使用してcmdを開始する場合は、adbデバイスを入力して読み取り可能にするか、adb pull sdcard/sdcard_(日付または追加)と入力します<---このファイルは事前にadbディレクトリに作成する必要があります。利益!
他のバージョンでは、adb pull mnt/sdcard/sdcard_(日付または追加)と入力します
忘れずにファイルを作成するか、混乱するか、機能しません。
ルート化されたデバイスからアクセスを制限してディレクトリをプルする場合は、adbをルートとして再起動する必要があります。プルする前にadb root
と入力します。そうしないと、remote object '/data/data/xxx.example.app' does not exist
というエラーが表示されます