DOS批处理for循环多命令执行异常:第二个adb命令失效求助
解决DOS批处理for循环中第二个adb命令不执行的问题
嘿,我来帮你搞定这个头疼的问题!你遇到的第二个adb命令只显示不执行的情况,大概率是重复使用wait-for-device导致的阻塞,咱们一步步来解决:
问题根源分析
你的第一个adb wait-for-device已经完成了设备连接等待,当设备处于正常连接状态时,第二个adb wait-for-device会一直等待一个“设备重新连接”的触发事件(比如断开再插上),但你的设备一直连着,所以这个命令会卡住,看起来就像没执行一样。
修复后的代码
直接去掉第二个命令里的wait-for-device即可,修改后的脚本如下:
:loop FOR /L %%i IN (1,1,500) do ( REM 第一个滑动命令:等待设备就绪后执行 adb wait-for-device shell input touchscreen swipe 1400 800 200 800 1000 REM 第二个滑动命令:设备已连接,直接执行 adb shell input touchscreen swipe 800 1400 200 800 1000 ) goto loop
额外调试技巧(如果还是有问题)
如果修改后依然异常,可以加一些调试输出,确认每个命令是否被触发:
:loop FOR /L %%i IN (1,1,500) do ( echo [第%%i次循环] 执行第一个滑动命令... adb wait-for-device shell input touchscreen swipe 1400 800 200 800 1000 echo [第%%i次循环] 执行第二个滑动命令... adb shell input touchscreen swipe 800 1400 200 800 1000 echo [第%%i次循环] 两次滑动完成! ) goto loop
这样你能在控制台清晰看到每个步骤的执行状态,方便排查问题。
其他可能的排查点
- 确保
adb已经加入系统环境变量PATH,如果没有,直接使用adb的完整路径(比如C:\Android\platform-tools\adb.exe) - 检查滑动命令的参数是否正确:
input touchscreen swipe的格式是起始X 起始Y 结束X 结束Y 时长(毫秒),你的参数看起来是没问题的
内容的提问来源于stack exchange,提问作者deadfish
相关产品推荐
相关产品推荐

