bat如何实现多台android设备同时安装多个apk

背景:在做预置资源(安装apk)时,有多台android设备需要做相同的资源(如:10台,安装10个apk)。一台一台去预置的话(当然也可以每人一台去预置),耗时较长有重复性。

问题:如何去实现多台同时操作呢?(这个问题让我想到了多进程和多线程)

思路:(前提:环境为window系统)。可以使用批处理来实现,假设有10台设备,分别开启10个cmd窗口进行安装。

解决:初始方案-->最终方案

No1  :将安装命令写到bat文件中,复制为10个bat文件。显然这是最原始的方法,也不方便。因为每次执行一个bat文件时,都要修改文件中的deviceId,多一个apk还得加一行代码,而且每个bat文件都要点击一遍(假设有20个,30个呢?想想这得修改点击多少次啊)

@echo off
adb -s deviceId install -r xxx1.apk
adb -s deviceId install -r xxx2.apk
adb -s deviceId install -r xxx3.apk
adb -s deviceId install -r xxx4.apk
pause

No2 :对以上的方法进行修改,可以使用start cmd 去执行。这样一来,只需要点击一次就可以了。但是还得修改deviceId,多一台设备还要加一行start cmd。

@echo off
start  cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start  cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start  cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)"
start  cmd /k "for /r "%cd%\apkPackage\" %%a in (*.apk) do ( adb -s deviceId install -r %%a)" 
pause

 No3 :No1和No2都不能满足需求。最终版本(还有其他异常情况,暂未处理)

@echo off&setlocal enabledelayedexpansion
title Install-MultipleDevices
color 0a
rem +++++++++++++++++++++++++++++++++++++++++++
rem   Install-MultipleDevices.bat
rem          By zhzw @2017/7/7
rem   
rem            Version: 1.2
rem +++++++++++++++++++++++++++++++++++++++++++

rem 两个adb devices 为了减少deamon start successfully语句写入deviceId.txt中
adb devices
adb devices >deviceId.txt
rem 处理0台设备的情况
set count=0
type nul>temp.txt
rem tonkes与delims的位置不能改变,否则会出现显示混乱
for /f "skip=1 tokens=1 delims=    " %%i in (deviceId.txt) do (
    echo %%i >>temp.txt
    set /a count+=1
)
echo 总共!count!台设备
for /f %%i in (temp.txt) do (
    start "Device:%%i" cmd /k "@echo off& for /r "%cd%\apkPackage\" %%a in (*.apk) do ( echo APK=%%~nxa &adb -s %%i install -r %%a)"    
)
del temp.txt
pause 

 

Update

这是多台设备文件push的脚本,暂且贴在这吧

@echo off
setlocal enabledelayedexpansion

rem .........................
rem MutilPushFile.bat
rem                    by zzw 
rem ..........................

@rem 判断设备数量
for /f %%i in ('adb devices ^| find /c "device"') do (
    set a=%%i
    if !a! LEQ 1 ( echo "NO DEVICE CONNECTED" & echo,& goto end ) else ( set /a b=!a!-1 & echo Total !b! devices )
)

echo,
echo start push file to devices ...
echo,

@rem push 文件到设备
for /f %%i in ('adb devices ^|findstr device$') do (
    adb -s %%i push getspec.sh /data/local/tmp 1>nul 2>nul && echo push %%i success || echo push %%i ***fail***
)
:end
echo,
pause

 

posted @ 2017-07-07 23:21  zeotoone  阅读(3511)  评论(0编辑  收藏  举报