运行开启手机USB网络共享的bat脚本时adb报错no devices/emulators found如何解决
adb 开启USB网络共享脚本断连问题修复方案
问题根因
执行开启USB网络共享的操作时,安卓设备的USB连接会出现短暂重置,adb与设备的连接临时中断:前面的adb命令执行时连接尚未断开,执行到最后两条命令时刚好处于断连窗口,因此抛出no devices/emulators found错误。
额外注意你脚本中的adb shell sleep 3是在手机端执行休眠逻辑,无法让电脑脚本等待设备重连,完全起不到规避断连的作用。
修复步骤
- 替换手机端休眠为电脑本地等待
bat脚本使用自带的timeout命令实现本地等待,给足USB重连的时间,示例为等待5秒,可根据机型调整时长:
timeout /t 5 /nobreak >nul
- 增加adb设备等待逻辑
在执行最后两条命令前加入adb wait-for-device,该命令会自动阻塞,直到adb成功检测到已连接的设备后才会执行后续命令,彻底规避断连时机问题。
修复后完整脚本
adb shell am start -n com.android.settings/.TetherSettings adb shell input keyevent 20 adb shell input keyevent 20 adb shell input keyevent 20 adb shell input keyevent 20 adb shell input keyevent 20 adb shell input keyevent KEYCODE_ENTER :: 本地等待5秒适配USB连接重置 timeout /t 5 /nobreak >nul :: 等待adb识别到设备后再执行后续操作 adb wait-for-device adb shell am force-stop com.android.settings
可选优化
如果你的设备开启USB网络共享后会重置USB调试授权,可以在adb wait-for-device前加入adb kill-server && adb start-server重启adb服务,提升识别成功率。
注意事项
- 提前开启手机的「USB调试」「USB调试(安全设置)」权限,部分机型需要额外开启「允许通过USB修改系统设置」权限,否则模拟按键操作不会生效。
- 不同厂商的设置页面中USB网络共享选项的位置不同,如果执行按键后选中的选项不对,可以自行调整
input keyevent 20的执行次数。
内容的提问来源于stack exchange,提问作者fakeivchenko
相关产品推荐
相关产品推荐

