Kullanarak birden fazla dosya çekmenin en iyi yolu nedir
adb pull
Benim var /sdcard/
şu ada sahip 25 dosya:
gps1.trace
gps2.trace
...
gps25.trace
Joker karakter çalışmıyor:
adb pull /sdcard/gps*.trace .
Kullanarak birden fazla dosya çekmenin en iyi yolu nedir
adb pull
Benim var /sdcard/
şu ada sahip 25 dosya:
gps1.trace
gps2.trace
...
gps25.trace
Joker karakter çalışmıyor:
adb pull /sdcard/gps*.trace .
DDMS
tutulma perspektifinde denedim ve sdcard'ımdan çoklu dosya seçip pull
üzerlerinde bir gerçekleştirebildim . Eclipse kullanmıyorsanız, DDMS ayrı bir SDK aracı olarak mevcuttur.
monitor
komut harika çalışıyor, içinde olmalı <sdkdir>/tools
!
Yanıtlar:
Joker karakterleri kabul xargs
eden adb shell ls
komutun sonucunu kullanabilirsiniz . Bu, birden çok dosyayı kopyalamanıza izin verir. Sinir bozucu bir şekilde, adb shell ls
komutun çıktısı, kullanarak kaldırabileceğiniz satır besleme kontrol karakterlerini içerir tr -d '\r'
.
Örnekler:
adb shell 'ls sdcard/gps*.trace' | tr -d '\r' | xargs -n1 adb pull
adb shell 'ls /sdcard/*.txt' | tr -d '\r' | sed -e 's/^\///' | xargs -n1 adb pull
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
at file yerine bir dizin adı alabilir ve içindeki tüm dosyaların bulunduğu dizini çeker.
Tüm gps izlerinizi / sdcard / gpsTraces içine alın
adb pull /sdcard/gpsTraces/ .
Örnek adb pull
ve adb push
özyinelemeli dizinleri:
C:\Test>adb pull /data/misc/test/ .
pull: building file list...
pull: /data/misc/test/test1/test2/test.3 -> ./test1/test2/test.3
pull: /data/misc/test/test1/test2/test.2 -> ./test1/test2/test.2
pull: /data/misc/test/test1/test2/test.1 -> ./test1/test2/test.1
pull: /data/misc/test/test1/test.3 -> ./test1/test.3
pull: /data/misc/test/test1/test.2 -> ./test1/test.2
pull: /data/misc/test/test1/test.1 -> ./test1/test.1
pull: /data/misc/test/test.3 -> ./test.3
pull: /data/misc/test/test.2 -> ./test.2
pull: /data/misc/test/test.1 -> ./test.1
9 files pulled. 0 files skipped.
0 KB/s (45 bytes in 0.093s)
C:\Test>adb push . /data/misc/test/
push: ./test1/test2/test.3 -> /data/misc/test/test1/test2/test.3
push: ./test1/test2/test.2 -> /data/misc/test/test1/test2/test.2
push: ./test1/test2/test.1 -> /data/misc/test/test1/test2/test.1
push: ./test1/test.3 -> /data/misc/test/test1/test.3
push: ./test1/test.2 -> /data/misc/test/test1/test.2
push: ./test1/test.1 -> /data/misc/test/test1/test.1
push: ./test.3 -> /data/misc/test/test.3
push: ./test.2 -> /data/misc/test/test.2
push: ./test.1 -> /data/misc/test/test.1
9 files pushed. 0 files skipped.
0 KB/s (45 bytes in 0.062s)
./adb pull /sdcard
<- başarısız
./adb pull /sdcard/
<- yinelemeli olarak çalışır - sondaki eğik çizgiye dikkat edin
Nexus 5 ve adb ile Mart 2014'te indirilerek test edilmiştir.
Çıktıyı 'ls'den ayrıştırmak genellikle kötü bir fikirdir. Bunun yerine 'bul'u kullanın.
adb shell 'find /sdcard/ -name "gps*.trace" -print0' | xargs -0 -n 1 adb pull
Olsa adb pull
komut uzaktan parametre için klasör adını kabul etmeye başladı, hala kullanmayı tercih tar
komutu. Bu daha fazla esneklik sağlar - dosya adı desenleri (her ikisi için izin verir içerir ve dışlamak ) sembolik link kontrolü, korur dosya izinleri. Android 6.0'dan beri yerleşik olarak kullanabilirsiniz. Bundan önce aşağıdaki gibi 3. taraf araçları kullanmanız gerekiyordu busybox
:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Yolunuzdaki liderleri atladığınızdan emin olun /
.
Bunu Windows kutuları için oluşturdum, dosya sistemini bağlamadan dosyaları joker karakter kullanarak aktarmak çok kullanışlıdır. Bu komut dosyasını ortam yolunuzda bir yere ekleyebilirsiniz.
adbpull.bat
@echo off
setlocal enabledelayedexpansion
if %1.==. (
echo Wilcard parameter is required.
goto end
)
for /F "tokens=* USEBACKQ" %%F in (`adb shell ls %1`) do (
set text=%%F
set mfile=!text:~0,-1!
adb pull "!mfile!"
)
:end
endlocal
Misal:
adbpull /sdcard/DCIM/Camera/IMG_2016*
Linux veya mac kullanıyorsanız , Android Hata Ayıklama Köprüsü için bir FUSE Dosya Sistemi ADBFS
Dizin çekme, yeni Android araçlarında kullanılabilir. (Hangi sürümden eklendiğini bilmiyorum, ancak en son ADT 21.1 üzerinde çalışıyor)
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)
David'in cevabına dayanarak, bunu biraz daha iyi buluyorum:
adb shell ls /foo | tr -d '\r' | xargs -n1 adb pull
Yazmak için bir karakter eksik olmasına ek olarak (önemli) -r
, bir boşluğa dönüştürmez . Bu önemli bir fark, sanki yapmaya çalışıyormuşsun gibi
adb shell ls /foo/myFile* | tr '\r' ' ' | xargs -i -n1 adb pull {} someDir
söylerken hata alacaksın
remote object '/foo/myFile1 ' does not exist
Bunun yerine, işe yarayacak olan bunu yapabilirsiniz:
adb shell ls /foo/myFile* | tr -d '\r' | xargs -i -n1 adb pull {} someDir
Joker karakterler benim durumumda çalışıyor, sanal cihazımın Whatsapp Görüntülerini masaüstüme aktarmak için aşağıdaki basit komut dosyasını kullanıyorum
#! /bin/bash
mkdir -p ~/Pictures/Pictures_adb
rm -f ~/Pictures/Pictures_adb/*
cd ~/Pictures/Pictures_adb
adb root
adb shell 'cp /data/media/0/WhatsApp/Media/WhatsApp\ Profile\ Photos/* /sdcard/Pictures/;exit'
adb pull /sdcard/Pictures
mv ~/Pictures/Pictures_adb/Pictures/* ~/Pictures/Pictures_adb/
rmdir ~/Pictures/Pictures_adb/Pictures
cd
Android'de, ilişkili izinlere sahip bazı klasörler var! Bazı klasörler kök veya sistem kullanıcısına aittir.
"Adb pull" yapmadan önce bu dosyaların, klasörlerin izinlerini değiştirmelisiniz.
Aşağıdaki komutlar yardımcı olabilir:
adb shell
su
chmod -R 777 target_folder
exit
...
adb pull /.../target_folder/ . (current local folder)
adb
ama dokümanlardanpull
bir dizinin tamamını çekmek için kullanılabilir ??? Durum buysa ve bunlar kendi uygulamanız tarafından oluşturulan dosyalardır, o zaman neden onları gibi bir alt dizine yazıp/sdcard/mygpsfiles
sonra kullanmıyorsunuzadb pull /sdcard/mygpsfiles
? Işe yarar mı?