Ich benutze nicht, adbaber aus den Dokumenten pullkann ein ganzes Verzeichnis gezogen werden ??? Wenn dies der Fall ist und dies Dateien sind, die von Ihrer eigenen App generiert wurden, schreiben Sie sie in ein Unterverzeichnis wie /sdcard/mygpsfilesund verwenden Sie sie dann adb pull /sdcard/mygpsfiles. Funktioniert das?
Squonk
2
Alternativ habe ich gerade den Datei-Explorer aus der DDMSPerspektive von Eclipse ausprobiert und konnte Dateien von meiner SD-Karte mehrfach auswählen und pullauf ihnen ausführen . Wenn Sie Eclipse nicht verwenden, ist DDMS als separates SDK-Tool verfügbar.
Squonk
monitorBefehl funktioniert super, sollte drin sein <sdkdir>/tools!
Santosh Kumar
Antworten:
137
Sie können xargsund das Ergebnis des adb shell lsBefehls verwenden, der Platzhalter akzeptiert. Auf diese Weise können Sie mehrere Dateien kopieren. Ärgerlicherweise enthält die Ausgabe des adb shell lsBefehls Zeilenvorschub-Steuerzeichen, die Sie mit entfernen könnentr -d '\r' .
Zu Ihrer Information: Windows und DOS verwenden "\ r \ n" für Wagenrücklauf- / Zeilenvorschubpaare (dh nicht "\ n \ r").
BrainSlugs83
3
in meinem Fall schlug es fehl, die (korrekt erhaltenen) Dateinamen aus dem Stammverzeichnis des Android zu ziehen, um es zu lösen, ich benutzte:adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
rupps
4
Es funktioniert nicht zu sagen, dass tr nicht als interner oder externer Befehl
erkannt wird
99
adb pull kann einen Verzeichnisnamen anstelle von at file erhalten und das Verzeichnis mit allen darin enthaltenen Dateien wird abgerufen.
Ziehen Sie alle Ihre GPS-Spuren in / sdcard / gpsTraces
adb pull /sdcard/gpsTraces/.
Beispiel für adb pullund adb pushvon rekursiven Verzeichnissen:
@kakyo Es funktioniert für Unterordner für mich. Überprüfen Sie, ob Sie die neueste ADB von Google haben. (Ich benutze 1.0.29)
Ofir Luzon
Ja, ich habe festgestellt, dass es am Ende für nicht leere Ordner funktioniert. Ich hatte einige leere Ordner, die nicht abgerufen wurden. Scheint "Push" auch nicht rekursiv zu sein?
Kakyo
@kakyo Ich habe die Ausgabe eines rekursiven Pull and Push zu meiner Antwort hinzugefügt. Sie haben Recht mit leeren Ordnern, sie werden nicht gezogen oder verschoben.
Ofir Luzon
1
Achtung: Mit ADB Pull verlieren die Dateien ihr ursprüngliches Änderungsdatum.
Stan
3
@Stan: Es sei denn, Sie verwenden die Option "-a" wie in "adb pull [-a] <remote> ... <local>", wodurch laut Datei der Zeitstempel und der Modus der Datei erhalten bleiben.
Rusty Gear
27
./adb pull /sdcard <- schlägt fehl
./adb pull /sdcard/ <- funktioniert rekursiv - beachten Sie den abschließenden Schrägstrich
Getestet mit Nexus 5 und adb heruntergeladen im März 2014.
Auf meinem Computer musste ich den vollständigen Pfad zu adb verwenden, aber ansonsten funktionierte dies großartig!
Dan J
Diese Antwort ist eigentlich ziemlich klug. Gut gemacht!
Darth Egregious
6
Obwohl der adb pullBefehl den Ordnernamen für den Remote-Parameter akzeptiert, bevorzuge ich die Verwendung des tarBefehls. Es bietet mehr Flexibilität - ermöglicht Dateinamenmuster ( Einschließen und Ausschließen ), Symlink-Steuerung und behält Dateiberechtigungen bei. Seit Android 6.0 können Sie ein eingebautes verwenden. Vorher mussten Sie Tools von Drittanbietern verwenden wie busybox:
adb exec-out tar c sdcard/amazonmp3 > amazon.tar
Stellen Sie sicher, dass Sie die Führung /auf Ihrem Weg weglassen .
Oh, es hat nicht funktioniert. tar -tvf sagt mir, dass das Ergebnis nicht wie ein Teerarchiv aussieht. Naja.
Themuddler
Sehr starker Weg! Das Problem sind jedoch Fehler / Warnungen wie "tar: Entfernen von führenden '/' aus Mitgliedsnamen", die der Ausgabedatei hinzugefügt wurden. Ich weiß nicht, wie ich das beseitigen soll.
x'ES
Ich bekomme 1,5 KB Datei auf der Ausgabe.
Shayan
5
Ich habe dies für Windows-Boxen erstellt. Es ist sehr nützlich, Dateien mit Platzhaltern zu übertragen, ohne das Dateisystem zu mounten. Sie können dieses Skript irgendwo in Ihre Pfadumgebung aufnehmen.
adbpull.bat
@echo off
setlocal enabledelayedexpansion
if%1.==.(
echo Wilcard parameter is required.gotoend)for/F "tokens=* USEBACKQ"%%F in(`adb shell ls %1`)do(set text=%%F
set mfile=!text:~0,-1!
adb pull "!mfile!"):end
endlocal
Leider benutze ich Windows mit Cygwin. Aber ich muss mich an diese erinnern - sehr interessante Lösung!
Hsz
3
Directory Pull ist für neue Android-Tools verfügbar. (Ich weiß nicht, von welcher Version es hinzugefügt wurde, aber es funktioniert mit dem neuesten ADT 21.1)
Es ist nicht nur ein Zeichen weniger zu tippen (große Sache), sondern wandelt das auch nicht -rin ein Leerzeichen um. Dies ist ein bedeutender Unterschied, als ob Sie es versuchen würden
In meinem Fall funktionieren Platzhalter. Ich habe das folgende einfache Skript verwendet, um WhatsApp-Bilder meines virtuellen Geräts auf meinen Desktop zu importieren
Sie verwenden Platzhalter für cp unter Android und nicht zum Ziehen auf dem Host. Deshalb funktioniert es. Gute Alternative, obwohl das Kopieren auf / sdcard / zusätzlichen Speicher kostet und private Dateien auf die SD-Karte verliert.
user905686
-3
In Android gibt es einige Ordner mit zugehörigen Berechtigungen! Einige Ordner gehören dem Root- oder Systembenutzer.
Ihr solltet die Berechtigungen dieser Dateien und Ordner ändern, bevor ihr "adb pull" macht.
Die folgenden Befehle könnten helfen:
adb shell
su
chmod -R 777 target_folder
exit...
adb pull /.../target_folder/.(current local folder)
adb
aber aus den Dokumentenpull
kann ein ganzes Verzeichnis gezogen werden ??? Wenn dies der Fall ist und dies Dateien sind, die von Ihrer eigenen App generiert wurden, schreiben Sie sie in ein Unterverzeichnis wie/sdcard/mygpsfiles
und verwenden Sie sie dannadb pull /sdcard/mygpsfiles
. Funktioniert das?DDMS
Perspektive von Eclipse ausprobiert und konnte Dateien von meiner SD-Karte mehrfach auswählen undpull
auf ihnen ausführen . Wenn Sie Eclipse nicht verwenden, ist DDMS als separates SDK-Tool verfügbar.monitor
Befehl funktioniert super, sollte drin sein<sdkdir>/tools
!Antworten:
Sie können
xargs
und das Ergebnis desadb shell ls
Befehls verwenden, der Platzhalter akzeptiert. Auf diese Weise können Sie mehrere Dateien kopieren. Ärgerlicherweise enthält die Ausgabe desadb shell ls
Befehls Zeilenvorschub-Steuerzeichen, die Sie mit entfernen könnentr -d '\r'
.Beispiele:
quelle
adb shell "ls -d /mnt/sdcard/Pictures/Screenshots/*" | tr '\r' ' ' | xargs -n1 adb pull
adb pull
kann einen Verzeichnisnamen anstelle von at file erhalten und das Verzeichnis mit allen darin enthaltenen Dateien wird abgerufen.Ziehen Sie alle Ihre GPS-Spuren in / sdcard / gpsTraces
Beispiel für
adb pull
undadb push
von rekursiven Verzeichnissen:quelle
./adb pull /sdcard
<- schlägt fehl./adb pull /sdcard/
<- funktioniert rekursiv - beachten Sie den abschließenden SchrägstrichGetestet mit Nexus 5 und adb heruntergeladen im März 2014.
quelle
Das Analysieren der Ausgabe von 'ls' ist im Allgemeinen eine schlechte Idee. Verwenden Sie stattdessen 'find'.
Warum sollten Sie die Ausgabe von ls nicht analysieren?
quelle
Obwohl der
adb pull
Befehl den Ordnernamen für den Remote-Parameter akzeptiert, bevorzuge ich die Verwendung destar
Befehls. Es bietet mehr Flexibilität - ermöglicht Dateinamenmuster ( Einschließen und Ausschließen ), Symlink-Steuerung und behält Dateiberechtigungen bei. Seit Android 6.0 können Sie ein eingebautes verwenden. Vorher mussten Sie Tools von Drittanbietern verwenden wiebusybox
:Stellen Sie sicher, dass Sie die Führung
/
auf Ihrem Weg weglassen .quelle
Ich habe dies für Windows-Boxen erstellt. Es ist sehr nützlich, Dateien mit Platzhaltern zu übertragen, ohne das Dateisystem zu mounten. Sie können dieses Skript irgendwo in Ihre Pfadumgebung aufnehmen.
adbpull.bat
Beispiel:
adbpull /sdcard/DCIM/Camera/IMG_2016*
quelle
ADBFS ein FUSE-Dateisystem für Android Debug Bridge, wenn Sie Linux oder Mac verwenden
quelle
Directory Pull ist für neue Android-Tools verfügbar. (Ich weiß nicht, von welcher Version es hinzugefügt wurde, aber es funktioniert mit dem neuesten ADT 21.1)
quelle
Aufbauend auf Davids Antwort finde ich das etwas besser:
Es ist nicht nur ein Zeichen weniger zu tippen (große Sache), sondern wandelt das auch nicht
-r
in ein Leerzeichen um. Dies ist ein bedeutender Unterschied, als ob Sie es versuchen würdenSie erhalten eine Fehlermeldung
Stattdessen können Sie dies tun, was funktionieren wird:
quelle
In meinem Fall funktionieren Platzhalter. Ich habe das folgende einfache Skript verwendet, um WhatsApp-Bilder meines virtuellen Geräts auf meinen Desktop zu importieren
quelle
In Android gibt es einige Ordner mit zugehörigen Berechtigungen! Einige Ordner gehören dem Root- oder Systembenutzer.
Ihr solltet die Berechtigungen dieser Dateien und Ordner ändern, bevor ihr "adb pull" macht.
Die folgenden Befehle könnten helfen:
quelle