2012-10-15 28 views

Trả lời

45

Sao chép *.img tệp vào thư mục trống, sau đó đẩy thư mục (adb push /tmp/images /storage/sdcard0). adb sẽ đẩy tất cả các tệp trong thư mục đó đến vị trí được chỉ định của bạn.

BTW, /sdcard vì đường dẫn đã lỗi thời trong một thời gian, vì vậy hãy đảm bảo bạn sử dụng đích đến tồn tại và được thiết bị của bạn hỗ trợ. Hầu hết các thiết bị Android 2.x/3.x/4.0 đều sử dụng /mnt/sdcard; Android 4.1 sử dụng /storage/sdcard0.

+0

Vâng, tôi đã làm các "thư mục lừa" nhưng Tôi đã tự hỏi nếu ADB hỗ trợ wildcards.Hmm tôi không bao giờ có một vấn đề với/sdcard/nhưng tôi đã chỉ được sử dụng nó trên 4.1.1 (4.1.2 như của gần đây) trong Galaxy Nexus của tôi. Cảm ơn rất nhiều để trả lời! – john

+4

@john: "Tôi đã tự hỏi liệu ADB có hỗ trợ các ký tự đại diện không" - dường như không. – CommonsWare

+0

Trong trường hợp đó tôi đang xem xét các thư mục lừa bạn đề nghị như là câu trả lời.Cảm ơn một lần nữa! – john

18

Từ tâm trí của tôi với lặp lại các tập tin ...

for i in *.img; do echo $i; adb push "$i" /sdcard/; done; 
+1

Tôi tin rằng điều này có thể làm việc (lưu ý rằng '/ sdcard /' là lỗi thời, như câu trả lời được chấp nhận), nhưng bạn nên xác minh rằng nó có và định dạng câu trả lời của bạn tốt hơn một chút. – MasterAM

+0

@znt: Tôi đã sửa nó. –

4

Sử dụng find ({} đại diện cho tên tập tin):

find *.img -exec adb push {} /storage/sdcard0 \; 
1

Tôi có một kịch bản nào đó (dấu gạch ngang, Ubuntu Precise) .

mpush:

#D=echo 
D= 
S= 
if [ $1 == "-s" ]; then 
    S="-s $2" 
    shift 
    shift 
fi 
if [ $# -lt 2 ]; then 
    echo "Usage: $0 directory files..." 
else 
DIR=$1 
shift 
for f in $* 
do 
    #echo "Processing $DIR/$f file..." 
    echo ~/aspt/adb ${S} push "$f" "$DIR/$f" 
    ${D} ~/aspt/adb ${S} push "$f" "$DIR/$f" 
done 
fi 

Cách sử dụng:

mpush /sdcard/ libMyLib.so 
mpush /sdcard/ libFirst.so libSecond.so 
mpush /sdcard/ * 
mpush -s 109d8a6fe0678a3 /sdcard/ * 

Hai dòng đầu tiên còn lại có để gỡ lỗi: bạn có thể thay đổi hai dòng đầu tiên để

D=echo 
#D= 

và có lệnh in lệnh adb push thay thế thực hiện chúng.

UPDATE: thêm khả năng để đẩy cho tất cả các thiết bị kèm theo (các -all switch)

#D=echo 
D= 
S= 
if [ $1 == "-2all" -o $1 == "-all" ]; then 
    shift 
    DEVICES=`~/aspt/adb devices | tail -n +2 | awk '{print $1}'` 
    if [ $# -lt 2 ]; then 
     echo "Usage: $0 [options] directory files..." 
     echo "Options:" 
     echo "-s device-id -- push to the specified device" 
     echo "-all or -2all -- push to all devices" 
    else 
    DIR=$1 
    shift 
    for d in $DEVICES 
    do 
     for f in $* 
     do 
    #echo "Processing $DIR/$f file..." 
    echo ~/aspt/adb -s $d push "$f" "$DIR/$f" 
    ${D} ~/aspt/adb -s $d push "$f" "$DIR/$f" 
     done 
    done 
    fi 
else 
    if [ $1 == "-s" ]; then 
     S="-s $2" 
     shift 
     shift 
    fi 
    if [ $# -lt 2 ]; then 
     echo "Usage: $0 [options] directory files..." 
     echo "Options:" 
     echo "-s device-id -- push to the specified device" 
     echo "-all or -2all -- push to all devices" 
    else 
    DIR=$1 
    shift 
    for f in $* 
    do 
     #echo "Processing $DIR/$f file..." 
     echo ~/aspt/adb ${S} push "$f" "$DIR/$f" 
     ${D} ~/aspt/adb ${S} push "$f" "$DIR/$f" 
    done 
    fi 
fi 
4

Giả sử bạn đang sử dụng của Windows, Bạn có thể sử dụng một vòng lặp for để tìm tập tin với phần mở rộng và làm một adb đẩy với tập tin đó như thế này trong dòng lệnh

for %i in (*.img) do adb push %i /sdcard/folderName/%i 

Nếu bạn đang lưu nó như một tập tin thực thi thì chắc chắn rằng để thêm một "%" trước khi "% i" như dưới đây

for %%i in (*.img) do adb push %%i /sdcard/folderName/%%i 

Nếu bạn đang sử dụng Ubuntu , bạn có thể sử dụng lệnh này mà về cơ bản làm điều tương tự

for f in *.img; do adb push $f /sdcard/folderName/$f; done 

Hy vọng nó sẽ giúp :)

Các vấn đề liên quan