adb卸载所有用户的安装包

@echo off
:: 设置adb的文件路径
set "adb_path=E:\SDK\platform-tools"
:: 更新环境变量
set PATH=%adb_path%;%PATH%
:: 白名单包名
set "whitelist=magisk.term com.speedsoftware.rootexplorer org.lsposed.manager com.tencent.mm com.eg.android.AlipayGphone com.cjs.hegui30"

:: 列出连接的设备并选择设备
adb devices
set /p device=Please enter the device name:

:: 检查设备是否有效
if "%device%"=="" (
    echo No device selected, exiting.
    pause
    exit /b
)

echo Uninstalling all packages except whitelisted ones...

:: 获取所有用户安装的应用包名并存储到 packages.txt 文件
adb -s %device% shell pm list packages -3 > packages.txt

:: 处理包名,逐个检查是否在白名单内
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in (packages.txt) do (
    set "package=%%a"
    set "found=0"

    :: 检查包名是否在白名单中
    for %%b in (%whitelist%) do (
        if "!package!"=="%%b" (
            set "found=1"
            echo Skipping whitelisted package: !package!
        )
    )

    :: 如果包名不在白名单中,卸载应用
    if "!found!"=="0" (
        echo Uninstalling package: !package!
        adb -s %device% shell pm uninstall --user 0 !package!
    )
)

endlocal

:: 删除临时文件
del packages.txt

:: 清除桌面布局
echo Clearing desktop layout...
adb -s %device% shell pm clear com.android.launcher3 > clear_result.txt

:: 判断是否包含 "Failed" 字符
findstr /i "Failed" clear_result.txt >nul
if %errorlevel%==0 (
    echo Resetting desktop layout failed!
) else (
    echo Desktop layout reset successfully.
)

:: 删除临时文件
del clear_result.txt

echo All other packages uninstalled except the specified ones.
pause
posted @   Dmail  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示