python调用bat脚本并出现cmd窗口_python(或BAT脚本)自动执行adb shell以后的命令

最近在用python做一个小工具,自动执行一些adb shell命令,使用subprocess.Popen来实现。

不过遇到个问题就是执行adb shell后就无法执行后面adb

shell里的命令了,查询得知subprocess.Popen可以自定义stdin参数来源,比如可以使用上一个命令的stdout来做为下一个命令的stdin

p1 = subprocess.Popen('adb shell',

shell=True, stdout=subprocess.PIPE,

stderr=subprocess.PIPE)

p2 = subprocess.Popen('ls', shell=True, stdin=p1.stdout,

stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print p2.stdout.read()

但在这里并未执行成功,怀疑原因是用subprocess执行adb

shell,是在CMD环境下执行,而后面执行ls命令,就已经进入adb shell环境了

当然,我们可以直接在CMD中输入adb shell ls来达到目的,但一些adb

shell自有命令如ll、grep在CMD中就无法识别

找到两个解决办法:

一、

1.把命令先保存在一个txt文档,如在D盘建一个a.txt,里面保存命令

cat /data/system/packages.xml | grep -E "a|b|c|d"

2.用输入重定向的方法在CMD输入ÿ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值