ADB用一个命令推送具有相同扩展名的多个文件

我想用一个命令将一些相同types的文件( .img )推送到手机的/sdcard分区。 但通配符不起作用:

 adb push *.img /sdcard/ 

有什么办法可以做到这一点?

*.img文件复制到一个空目录,然后按下目录( adb push /tmp/images /storage/sdcard0 )。 adb会将该目录中的所有文件推送到指定的位置。

顺便说一句, /sdcard作为一个path已经过时了相当一段时间,所以请确保您使用的目的地存在,并支持您的设备。 大多数Android 2.x / 3.x / 4.0设备使用/mnt/sdcard ; Android 4.1使用/storage/sdcard0

从我的脑海里回荡文件…

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

使用find( {}代表文件名):

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

假设你正在使用Windows ,你可以使用for循环来find带有扩展名的文件,并在命令行中用这样的文件来执行adb push

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

如果您将其保存为batch file,请确保在“%i”之前添加一个额外的“%”,如下所示

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

如果你正在使用Ubuntu ,你可以使用这个命令,基本上做同样的事情

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

希望它帮助:)

我有一个脚本,它(破折号,Ubuntu的精确)。

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 

用法:

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

前两行留在那里进行debugging:您可以将前两行更改为

 D=echo #D= 

并让脚本打印adb push命令而不是执行它们。

更新:增加了推送到所有连接设备的能力( -all开关)

 #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