检查adb设备连接状态

5

如何在批处理文件中检查adb设备是否已连接? 我在批处理文件中写了“adb devices”,但希望将其作为条件,以便应用程序可以顺畅自动运行。 因此,如果用户没有连接设备,则打印“无设备”并退出应用程序, 否则恢复应用程序。


你想要一个Bash脚本,它可以告诉你是否至少连接了一个设备,你是指TCP和USB连接类型还是仅USB连接类型? - Bertrand Martel
仅限于USB连接。 - 3llomi
3个回答

10

对于使用bash或类似shell环境的用户,请尝试使用以下命令:

$ adb get-state 1>/dev/null 2>&1 && echo 'device attached' || echo 'no device attached'

10
将输出导入到 find 并分析错误级别:
adb devices -l | find "device product:" >nul
if errorlevel 1 (
    echo No connected devices
) else (
    echo Found!
    ..............
)

谢谢,它已经起作用了。 但我不想指定设备ID, 我希望任何未连接的设备都能打印一些东西,并且如果连接了就恢复应用程序而不指定任何ID... 这可能吗? - 3llomi
1
我能处理 adb install package.apk 的结果吗? 如果结果 !=Success 就暂停 否则关闭窗口。 - 3llomi
好的,我已经尝试过了,但它总是在错误级别上返回0(在两种情况下都是如此)。有什么想法吗? - 3llomi
@ALLOMIRaj, 在这段代码中 wOxxOm 检查的是 find 命令的 errorlevel,而不是 adb,所以你在新问题中关于 adb 能够将 errorlevel 设置为除 0 以外的值的说法是错误的。 - Alex P.
那是解决方案,但今天我发现对于已Root的手机有一个问题,无法显示更多信息,因此无法识别为连接状态。我将adb devices -l | find "device product:"替换为@benjamin-k的回答adb devices | findstr "\<device\>",现在可以在已Root和未Root的设备上使用了。 - equiman
显示剩余2条评论

4

这是最简单也是最准确的方法,因为它只会找到“device”,而不会找到包含该字符串的其他单词,比如“devices”:

adb devices | findstr "\<device\>"

请注意,findstr只适用于Windows系统,而在Unix终端上不起作用。因此,相应的解决方案是使用find和grep组合。John在这个页面中很好地解释了这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接