Board logo

标题: [文件操作] [已解决]分享Android apk 批量安装脚本 [打印本页]

作者: z377409011    时间: 2017-1-5 10:56     标题: [已解决]分享Android apk 批量安装脚本

本帖最后由 pcl_test 于 2017-1-9 13:02 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. title APKs ADB Install Tool v1.0.0
  4. color 2f
  5. set adb="%~dp0\adb.exe"
  6. set fastboot="%~dp0\fastboot.exe"
  7. set /a c_num=1
  8. set /a File_Num=0
  9. set /a S_Num=0
  10. set /a F_Num=0
  11. echo ===============================================================================
  12. echo 本脚本会自动安装目录下所有APK文件(包括子文件夹)到ANDROID设备        
  13. echo ===============================================================================
  14. :CHECK
  15. echo.
  16. echo 正在检测手机连接情况......
  17. %adb% shell echo > nul 2>&1
  18. IF not ERRORLEVEL 0 goto NODEV
  19. echo 设备已连接,请稍候......
  20. echo.
  21. goto FILE_CHECK
  22. :NODEV
  23. echo 未连接手机,如果已插入手机,请打开USB调试,安装好驱动......
  24. echo 请按任意键继续......
  25. pause >nul
  26. goto Check
  27. :FILE_CHECK
  28. echo.
  29. echo 正在扫描APK文件,请稍后......
  30. if exist tmp.apk del tmp.apk
  31. if exist fail.log del fail.log
  32. if exist %temp%\apk_tmp.txt del %temp%\apk_tmp.txt
  33. for /f "delims=: tokens=1" %%i in ('dir /a/b/s *.apk 2^>nul^| findstr /n .*') do set "File_Num=%%i"
  34. if !File_Num!==0 goto NO_APK
  35. echo 找到%File_Num%个APK文件,准备安装......
  36. goto SET_PRAM
  37. :NO_APK
  38. echo.
  39. echo 找不到APK文件,请确认APK已经放入当前目录......
  40. echo 请按任意键继续......
  41. pause >nul
  42. goto FILE_CHECK
  43. :SET_PRAM
  44. set o=
  45. set /p o=是否启用覆盖安装模式? (Y/N,默认N):
  46. echo.
  47. if /i "%o%"=="Y" goto YES
  48. goto NO
  49. :YES
  50. echo 启用
  51. echo.
  52. set pram=-r
  53. goto INSTALL
  54. :NO
  55. echo 不启用
  56. echo.
  57. goto INSTALL
  58. :INSTALL
  59. echo 开始安装Android应用程序 ......
  60. for /f "delims=" %%a in ('dir /a-d/s/b *.apk') do (
  61.     echo.
  62.     echo 正在安装第!c_num!个,共%File_Num%个   
  63.     copy "%%a" tmp.apk > nul
  64.     echo 文件信息: %%a
  65.     %adb% install %pram% tmp.apk >> %temp%\apk_tmp.txt
  66.     set /a c_num+=1
  67.     for /f "delims=" %%i in (%temp%\apk_tmp.txt) do (
  68. echo %%i | findstr "Success" && set /a mk=1 || set /a mk=0 >nul
  69. set "var=%%i"
  70.         )
  71.     if !mk!==1 (set /a S_Num+=1) else (echo !var!&&set /a F_Num+=1 &&echo !var!>>fail.log&&echo %%a>>fail.log&&echo ...>>fail.log)
  72.     del %temp%\apk_tmp.txt
  73.     del tmp.apk
  74.     echo -------------------------------------------------------------------------------
  75. )
  76. echo.
  77. echo 已安装%num%个APK应用程序,成功%S_Num%个,失败%F_Num%个&&echo.
  78. if %F_Num%==0 goto DEL_CHOOSE else goto Show_FAIL_LIST
  79. :Show_FAIL_LIST
  80. echo 安装失败的文件:
  81. for /f "delims=," %%i in (fail.log) do (
  82. echo %%i
  83. )
  84. echo.
  85. echo 按任意键退出并查看安装失败文件列表
  86. pause>nul
  87. echo 安装失败文件列表 >> fail.log
  88. start notepad "%~dp0\fail.log"&&goto END >nul
  89. goto END
  90. :DEL_CHOOSE
  91. set o=
  92. set /p o=是否删除APK文件? (Y/N,默认退出):
  93. if /i "%o%"=="Y" goto DEL_APK
  94. goto END
  95. :DEL_APK
  96. echo.
  97. del /s *.apk
  98. echo.
  99. echo 所有文件已删除,按任意键退出
  100. pause>nul
  101. :END
  102. exit
复制代码

功能:
1、批量安装apk,支持文件名有中文,支持子目录,apk文件夹拖到程序所在目录即可;
2、可以记录安装、成功、失败数量;
3、可以记录安装失败的文件名,保存在fail.log中。


需配合adb工具使用!

作者: GNU    时间: 2017-1-5 11:03

copy "%%a" tmp.apk > nul
作者: z377409011    时间: 2017-1-5 11:16

回复 2# GNU


    谢谢。解决第一个问题了!后面想获取adb 命令的返回值可以帮忙解决嘛 ?谢谢!!
作者: z377409011    时间: 2017-1-6 09:48

回复 2# GNU


    可以麻烦再请问一下,
for /f "delims=: tokens=1" %%i in ('dir /a/b/s *.apk ^| findstr /n .*') do set "File_Num=%%i"
这一句在没有找到apk的时候,这么能不显示 “找不到文件呢”
作者: GNU    时间: 2017-1-6 13:26

回复 4# z377409011


    dir /a/b/s *.apk 2>nul




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2