3

有一个命令可以减轻管理 Android 手机包的痛苦,

adb shell pm uninstall org.kde.necessitas.example.one
adb shell pm uninstall org.kde.necessitas.example.two

但是我有很多手机,只想删除它们上特定域中的所有包。

它不能由

adb shell pm uninstall org.kde.necessitas.example.*

你的建议是什么?

4

3 回答 3

4

您可以在批处理文件中使用以下内容:(我假设是 Windows)

  adb shell pm list packages org.kde.necessitas.example > packages.txt

  for /F "tokens=2 delims=:" %%a in (packages.txt) do adb shell pm uninstall %%a

您可以更进一步,将搜索文本作为参数:

  adb shell pm list packages %1 > packages.txt

  for /F "tokens=2 delims=:" %%a in (packages.txt) do adb shell pm uninstall %%a

这会将pm list packages命令的输出通过管道传输到文本文件中,然后循环遍历文本文件的每一行。它调用adb shell pm uninstall该行中的每个第二个标记,在这种情况下是包名称。

于 2013-03-17T08:37:55.797 回答
1

如果您坐在电话本身的外壳中,则可以执行此操作(如果需要,可以在一条线上):

for i in $(pm list packages com.your.domain ) ; do
    pm uninstall ${i#*:} ;
done

如果你在主机上并且你使用的是 Unixy——Linux、Mac、Cygwin——那么类似的东西也可以在那里工作,但你需要将“adb shell”推入:

for i in $(adb shell pm list packages com.your.domain ) ; do
    adb uninstall ${i#*:} ;
done

由于您正在谈论从所有连接的手机中删除包裹,因此您需要另一个循环:

for d in $(adb devices | sed '/List/d; /\*/d; s/device$//') ; do
    for i in $(adb -s $d shell pm list packages com.your.domain ) ; do
        adb -s $d uninstall ${i#*:} ;
    done
done
于 2013-09-25T08:50:29.563 回答
1

对于 mac 用户:

adb shell pm list packages com.your.domain \
| cut -d ':' -f 2 \
| tr -d '\r' \
| xargs -L1 -t adb uninstall
于 2017-07-07T15:03:59.083 回答