找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27456|回复: 8

[文件管理] adb 常用命令集合

[复制链接]
发表于 2020-11-29 16:00:13 | 显示全部楼层 |阅读模式
本帖最后由 went 于 2020-11-29 19:14 编辑

adb工具包下载:
1.http://bcn.bathome.net/s/tool/index.html?key=adb
2.adb+aapt
adb 基础命令请参考
https://www.cnblogs.com/laoluoits/p/10985442.html
常用命令:
检测设备:
  1. adb devices
复制代码
有线连接设备:
  1. 数据线连接手机和电脑,手机打开USB调试即可
复制代码
无线连接设备:

  1. REM 命令: adb connect 手机IP:5555
  2. REM 手机电脑连接到同一局域网,手机打开网络ADB调试
  3. REM 出现connect to IP 即成功
  4. adb connect 10.2.1.172:5555
复制代码
推送文件到手机
  1. REM 命令:adb push "电脑文件路径" "手机文件路径"
  2. REM 保存原文件名
  3. adb push "G:\Desktop\1.txt" "/sdcard/"
  4. REM 保存新文件名
  5. adb push "G:\Desktop\1.txt" "/sdcard/2.txt"
复制代码
上传手机文件到电脑
  1. REM 命令:adb pull "手机文件路径" "电脑文件路径"
  2. REM 保存原文件名
  3. adb pull "/sdcard/1.txt" "G:\Desktop"
  4. REM 保存新文件名
  5. adb pull "/sdcard/1.txt" "G:\Desktop\A.txt"
复制代码
以下是自用代码分享

评分

参与人数 1PB +6 收起 理由
老刘1号 + 6 感谢分享

查看全部评分

 楼主| 发表于 2020-11-29 16:02:06 | 显示全部楼层
1.手机相册备份,DCIM文件夹,备份jpg和mp4文件
  1. @echo off
  2. REM adb工具包文件夹
  3. set "adbPath=G:\Phone\tool"
  4. REM 照片保存文件夹
  5. set "imgPath=G:\DCIM"
  6. REM 视频保存文件夹
  7. set "mp4Path=G:\video"
  8. set "path=%path%;%adbPath%"
  9. REM 检测设备
  10. adb devices | findstr /e /i "device" >nul 2>nul || ( adb devices & echo No Devices! & pause&exit )
  11. mkdir "%imgPath%" "%mp4Path%" >nul 2>nul
  12. REM 备份照片
  13. for /f "delims=" %%i in ('adb shell find /sdcard/dcim -name "*.jpg"') do (
  14.         set /p "=pull %%i  "<nul
  15.         if not exist "%imgPath%\%%~nxi" (
  16.                 adb pull "%%i" "%imgPath%\%%~nxi" >nul 2>nul
  17.                 echo done!
  18.         ) else echo skip
  19. )
  20. REM 备份视频
  21. for /f "delims=" %%i in ('adb shell find /sdcard/dcim -name "*.mp4"') do (
  22.         set /p "=pull %%i  "<nul
  23.         if not exist "%mp4Path%\%%~nxi" (
  24.                 adb pull "%%i" "%mp4Path%\%%~nxi" >nul 2>nul
  25.                 echo done!
  26.         ) else echo skip
  27. )
  28. pause&exit
复制代码
 楼主| 发表于 2020-11-29 17:41:49 | 显示全部楼层
本帖最后由 went 于 2020-11-29 19:25 编辑

2.应用一键备份,多开即可实现多线程备份(65001代码页,脚本不能有中文)
     adbPath = ADB工具包文件夹(adb+aapt)
backupPath = apk备份文件夹
  1. @echo off & chcp 65001 & cls & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. REM adb tool path
  4. set "adbPath=G:\Desktop\adb"
  5. REM backup path
  6. set "backupPath=G:\Desktop\apk"
  7. mkdir "%backupPath%" >nul 2>nul
  8. set "path=%path%;%adbPath%"
  9. REM counter
  10. set "count=0"
  11. for /f "tokens=1* delims=:" %%i in ('adb shell pm list package -3') do (
  12.         set /a "count+=1"
  13.         echo !count!:%%j
  14.         set "versionCode=" & set "versionName=" & set "remotePath=" & set "chsName="
  15.         REM get versionCode,versionName
  16.         for /f "tokens=1,2 delims== " %%a in ('adb shell pm dump "%%j" ^| findstr /i "versionCode= versionName="') do (
  17.                 if /i "%%a"=="versionCode" set "versionCode=%%b"
  18.                 if /i "%%a"=="versionName" set "versionName=%%b"
  19.         )
  20.         set "localName=[%%j]-!versionCode!-V!versionName!.apk"
  21.         REM get remotePath
  22.         for /f "tokens=2 delims=:" %%a in ('adb shell pm path "%%j"') do set "remotePath=%%a"
  23.         echo pulling ...
  24.         REM pull apk
  25.         if exist "%backupPath%\*!localName!" (
  26.                 REM if exist ,skip backup
  27.                 for %%a in ("%backupPath%\*!localName!") do echo skip %%a
  28.         ) else (
  29.                 adb pull "!remotePath!" "%backupPath%\!localName!" >nul
  30.                 REM get chinese name
  31.                 for /f "tokens=2 delims=:'" %%a in ('aapt dump badging "%backupPath%\!localName!" ^| findstr /i "application-label:"') do set "chsName=%%a"
  32.                 REM rename
  33.                 if not "!chsName!"=="" move /y "%backupPath%\!localName!" "%backupPath%\!chsName!!localName!" >nul
  34.                 echo done. %backupPath%\!chsName!!localName!
  35.         )
  36.         echo --------------------------------------------------
  37. )
  38. echo backup done.
  39. pause&exit
复制代码
 楼主| 发表于 2020-11-29 18:23:16 | 显示全部楼层
本帖最后由 went 于 2020-11-29 18:28 编辑

3.应用一键还原,全程静默安装,无须Root权限(65001代码页,脚本不能有中文)
     adbPath = ADB工具包文件夹
backupPath = apk安装包文件夹
    savePath = 手机保存apk的文件夹
  1. @echo off & chcp 65001 & cls & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. REM adb tool path
  4. set "adbPath=G:\Desktop\adb"
  5. REM backup path
  6. set "backupPath=G:\Desktop\apk"
  7. REM save path
  8. set "savePath=/sdcard/apk"
  9. mkdir "%backupPath%" >nul 2>nul
  10. set "path=%path%;%adbPath%"
  11. REM counter
  12. set "count=0"
  13. for %%i in ("%backupPath%\*.apk") do (
  14.         set /a "count+=1"
  15.         echo !count!:%%~nxi
  16.         REM check exist
  17.         adb shell if [ -f '%savePath%/%%~nxi' ];then echo true;else echo false;fi | findstr /i "true" >nul 2>nul && (
  18.                 REM exist
  19.                 echo skip push
  20.         ) || (
  21.                 REM not exist
  22.                 REM push to %savePath%
  23.                 echo pushing...
  24.                 adb push "%%i" "%savePath%/%%~nxi" >nul 2>nul
  25.                 echo push done.
  26.         )
  27.         REM copy apk to /data/local/tmp
  28.         adb shell cp '%savePath%/%%~nxi' 'data/local/tmp'
  29.         REM install apk
  30.         echo install ...
  31.         adb shell pm install 'data/local/tmp/%%~nxi'
  32.         REM del temp apk
  33.         adb shell rm -rR 'data/local/tmp/%%~nxi'
  34.         echo ----------------------------------------------------
  35. )
  36. pause&exit
复制代码
 楼主| 发表于 2020-11-30 20:41:57 | 显示全部楼层
4.解决手机无法弹出USB授权对话框
  1. @echo off
  2. REM 一键导入adb_keys
  3. adb devices | findstr /i /e "device" >nul 2>nul && (
  4.         echo.
  5.         echo. adb 连接正常 退出...
  6.         echo.
  7.         pause&exit
  8. )
  9. adb devices | findstr /i /e "unauthorized" >nul 2>nul && (
  10.         echo.
  11.         echo. adb 授权未成功,请手动进入recovery模式再次运行本程序
  12.         echo.
  13.         pause&exit
  14. )
  15. adb devices | findstr /i /e "recovery" >nul 2>nul && (
  16.         echo.
  17.         echo. recovery模式.
  18.         echo.
  19.         call :checkAdbKey
  20.         echo. 开始推送公钥文件
  21.         echo.
  22.         adb shell mkdir "/data/misc/adb/" >nul 2>nul
  23.         adb push "%USERPROFILE%\.android\adbkey.pub" "/data/misc/adb/adb_keys"
  24.         echo.
  25.         echo. 推送完成,按任意键重启手机.
  26.         pause>nul
  27.         adb reboot
  28.         echo. 重启完成,按任意键退出.
  29.         pause>nul
  30.         exit
  31. )
  32. echo.
  33. echo. 没有设备连接
  34. echo.
  35. pause&exit

  36. :checkAdbKey
  37. if not exist "%USERPROFILE%\.android\adbkey.pub" (
  38.         echo. 未找到 adbkey.pub 公钥文件
  39.         echo.
  40.         echo. 要生成adbkey.pub,请按任意键重启adb服务
  41.         pause >nul
  42.         echo.
  43.         echo. 请稍后...
  44.         echo.
  45.         taskkill /im adb.exe /f >nul 2>nul
  46.         adb start-server
  47.         call :checkAdbKey
  48. ) else (
  49.         echo.
  50.         echo. 公钥文件:%USERPROFILE%\.android\adbkey.pub
  51.         echo.
  52.         goto :eof
  53. )
复制代码
 楼主| 发表于 2022-10-18 21:04:29 | 显示全部楼层
5.备份应用数据 需要root权限
  1. @echo off & cd /d "%~dp0"
  2. REM 检查root权限
  3. adb shell su -c 'ls' 2>nul | findstr /be system >nul 2>nul || ( echo 无root权限 & pause&exit)
  4. REM 指定数据包保存文件夹和包名
  5. set "data_dir=data"
  6. set "pkg_name=com.tencent.mm"

  7. REM 命令设置
  8. set "adb_shell=adb shell"
  9. set "adb_shell_su=adb shell su -c"

  10. REM 路径设置
  11. mkdir "%data_dir%" 2>nul
  12. set "data1=sdcard/Android/data/%pkg_name%/"
  13. set "data2=data/data/%pkg_name%/"
  14. set "data_gz=/sdcard/%pkg_name%.gz"
  15. set "save_gz=data\%pkg_name%.gz"

  16. echo. 开始备份 %pkg_name%

  17. echo. 打包数据...
  18. %adb_shell_su% tar -czf "%data_gz%" "%data1%" "%data2%"

  19. echo. 备份数据...
  20. adb pull "%data_gz%" "%save_gz%"

  21. echo. 删除数据包...
  22. %adb_shell% rm -rR "%data_gz%"

  23. echo. 备份完成

  24. pause&exit
复制代码
 楼主| 发表于 2022-10-18 21:05:34 | 显示全部楼层
6.恢复应用数据 需要root权限
  1. @echo off & cd /d "%~dp0"
  2. REM 检查root权限
  3. adb shell su -c 'ls' 2>nul | findstr /be system >nul 2>nul || ( echo 无root权限 & pause&exit)
  4. REM 指定数据包保存文件夹和包名
  5. set "data_dir=data"
  6. set "pkg_name=com.tencent.mm"

  7. REM 命令设置
  8. set "adb_shell=adb shell"
  9. set "adb_shell_su=adb shell su -c"

  10. REM 路径设置
  11. mkdir "%data_dir%" 2>nul
  12. set "data_gz=/sdcard/%pkg_name%.gz"
  13. set "save_gz=data\%pkg_name%.gz"

  14. echo. 推送数据包...
  15. if not exist "%save_gz%" (echo. 不存在%pkg_name%的备份 & pause&exit)
  16. adb push "%save_gz%" "%data_gz%"

  17. echo. 释放数据包
  18. %adb_shell% am force-stop %pkg_name%
  19. %adb_shell_su% tar -xzf "%data_gz%"

  20. echo. 设置权限
  21. for /f "tokens=3" %%i in ('%adb_shell% ls -l '/sdcard/Android/data' ^| findstr /e /C:" %pkg_name%"') do (
  22.         echo. %%i
  23.         %adb_shell_su% chown -hR %%i:%%i "/data/data/%pkg_name%"
  24. )

  25. echo. 删除数据包
  26. %adb_shell% rm -rR "%data_gz%"

  27. echo. 恢复成功

  28. pause&exit
复制代码
发表于 2022-10-29 20:48:45 | 显示全部楼层
adb push和adb pull不支持中文路径和中文名,这个要说明一下。

楼主能找到修改版的adb么,支持中文路径的那种。
发表于 2024-3-28 14:21:12 | 显示全部楼层
本帖最后由 77七 于 2024-3-28 14:31 编辑

因为安卓手机应用读取剪贴板,可能导致隐私泄露;应用内震动无法从应用内或者系统设置中关闭,特搜集了相关adb命令代码(代码比较基础,就不贴出处了),写成批处理自用,在此借楼分享一下给需要的朋友
本代码只写了 剪贴板、震动,可以自己尝试输入其它项目。因本人水平十分有限,疏忽、错误难免,代码仅供参考。

  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. :1
  4. adb devices |findstr /rec:"device" 1>nul
  5. if errorlevel 1 (
  6.         echo 请确保手机已经打开[允许USB调试] 并连接到电脑,按【回车键】再次尝试
  7.         pause
  8.         goto :1
  9. ) else (
  10.         echo 连接成功!
  11. )
  12. echo=
  13. echo 说明:
  14. echo  1.项目举例,剪贴板【READ_CLIPBOARD】震动【VIBRATE】
  15. echo  2.允许【allow】禁止【ignore】
  16. echo  3.均区分大小写
  17. echo=
  18. setlocal
  19. set /p c1=输入项目,如需要管理剪贴板权限,则输入READ_CLIPBOARD:
  20. set /p c2=输入操作,如需要禁止权限,则输入ignore:

  21. if "%c2%" equ "allow" (
  22.         set c3=ignore
  23. ) else (
  24.         set c3=allow
  25. )

  26. setlocal enabledelayedexpansion
  27. call :2 "%c1%" "%c2%" "%c3%"
  28. endlocal
  29. endlocal
  30. goto :1

  31.         :2
  32.         echo=
  33.         echo 当前 "%~3" 权限app
  34.         echo=
  35.         for /f "delims=" %%a in ('adb shell cmd appops query-op --user 0 %~1 %~3') do (
  36.                 set /a n+=1001
  37.                 echo [!n:~-3!] %%a
  38.                 set #!n:~-3!=%%a
  39.         )
  40.         if not defined n (
  41.                 echo 无符合条件的app
  42.                 exit /b
  43.         )
  44.         echo=
  45.         set /p c4=输入所有需要 "%~2" 的序号,以空格分隔:
  46.         echo=
  47.         for %%a in (%c4%) do (
  48.                 adb shell cmd appops set !#%%a! %~1 %~2
  49.                 rem 此命令成功失败无提示,请自行查看效果
  50.                 echo %~2 !#%%a! %~1 权限
  51.         )
  52.         echo=
  53.         echo 操作完成
  54.         echo=
  55.         echo=
  56.         exit /b
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:12 , Processed in 0.021642 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表