如何编写Bat文件在ADB Shell中运行需接收输入的可执行程序
如何在批处理中通过ADB Shell为交互式程序传递输入
你遇到的问题是本地管道输入无法传递到ADB Shell内运行的程序,这是因为echo good_guy | adb shell Helloworld.exe会把输入传给本地的adb shell进程,而非设备端的Helloworld.exe。以下是几种可行的解决方法:
方法一:在设备端Shell内执行管道命令
直接让设备端的Shell处理输入管道,把整个命令组合传给adb shell:
adb shell "echo good_guy | Helloworld.exe"
如果程序需要多行输入(比如你的代码里预留了age输入),可以扩展为:
adb shell "(echo good_guy && echo 25) | Helloworld.exe"
这种方式会在设备端依次执行echo命令,将输出直接管道给目标程序,完美适配你的交互式需求。
方法二:通过输入文件重定向
如果输入内容复杂或较长,可以先把输入写入本地文件,推送到设备后重定向程序输入:
:: 生成本地输入文件 echo good_guy > input.txt :: 推送到设备临时目录 adb push input.txt /data/local/tmp/ :: 在设备端重定向程序输入 adb shell "Helloworld.exe < /data/local/tmp/input.txt" :: 清理临时文件 adb shell rm /data/local/tmp/input.txt del input.txt
注意事项
- 确保
Helloworld.exe在设备的环境变量PATH中,或者使用完整路径(如/data/local/tmp/Helloworld.exe) - 部分设备默认Shell为
sh,上述命令语法完全兼容,无需额外调整
内容的提问来源于stack exchange,提问作者Shadow_shaman
相关产品推荐
相关产品推荐

