Android bat批处理自动执行adb shell命令
2016-04-06 17:22
381 查看
1 问题
最近在做app的时候,要将Android手机中的Sqlite数据库导入到pc上,查看里面的数据,然后每次去app的目录下面去找出数据库,然后在adb shell中复制到sdCard,然后退出shell,再用adb pull命令拉到pc上,非常麻烦,一不小心就出错了,多搞几次就崩溃了。作为程序猿当然不能这么干啦。当然你可以用DDMS,可视化操作导出数据库,但是且不谈真机上DDMS根本没有权限看到数据库,作为一个程序猿,你需要更优雅的解决办法
2 手动操作
下面先讲手动操作,如何将Android数据库导出到Windows电脑上首先进入命令行cmd,然后一步一步执行下面命令:
adb shell //进入shell su - //切换到root命令 cp /data/data/com.demo.app/databases/db_test /mnt/sdcard // 复制数据库到sdCard上,否则无法拉到pc上 exit //退出root exit //退出shell,回到cmd adb pull /mnt/sdcard/db_test C:\Users\Administrator\Desktop // 将数据库拉到桌面上
注意:这里必须先将数据库复制到sdCard卡上,然后再从sdCard上拉到电脑上,因为adb pull没有root权限,没有办法直接从/data/data目录下面去拉数据库
好了,通过上述操作就可以把demoapp下面的db_test数据库拉到pc上,是不是巨麻烦,下面来讲批处理操作
3 自动操作
bat文件可以自动执行一批dos命令,不用一个一个输入。具体方法是:新建一个txt文件a.txt,输入上面的手动命令,注意在bat中注释符号是”rem”,需要将所有的”//”换成”rem”,然后修改文件名为a.bat,直接双击运行,然后。。。。呵呵
咋不按套路出牌呢,为啥卡在这儿呢?这是因为一旦进入shell,bat批处理命令就失效了,也就是卡在了shell里面,不会继续往下执行了,所以,正确的写法是:
adb shell "su -c 'cp /data/data/com.demo.app/databases/db_test /mnt/sdcard'" adb pull /mnt/sdcard/db_test C:\Users\Administrator\Desktop
注意:adb shell “su -c ‘shell中要执行的命令’ “
这样就使得adb shell具有了root权限
再也不用去shell里面敲命令了,双击一键完成,是不是很优雅呢
4 总结
其实归结起来就是如何让adb shell执行时拥有root权限:adb shell “su -c ‘your command’ “
另外,真机必须root
5 转载请注明来自”梧桐那时雨的博客”:/article/11587795.html
Tips:如果觉得这篇博客对你有帮助或者喜欢博主的写作风格,就给博主留个言或者顶一下呗,鼓励博主创作出更多优质博客,Thank you
相关文章推荐
- 通过adb shell在移动终端上抓包分析
- linux shell while读取文件变量作用域
- 不一样的命令行 – Windows PowerShell简介
- java调用shell获取返回值
- Linux shell之打印输出
- Shell排序
- webhdfs 使用shell下载文件
- Ubuntu下将命令行封装成全局命令
- PowerShell 多线程的使用
- Linux Shell 文本处理工具集锦
- shell脚本之条件测试
- I.MX6 Android Linux shell MMPF0100 i2c 设置数据
- shell编程之运算符
- 日常 shell 命令汇总
- shell脚本之echo命令
- Bash玩转脚本2之自己的脚本管理工具
- shell 处理文本工具集合(常用命令)
- shell中的${},##和%%的使用
- Ubuntu 改动bash
- Linux进阶之bash编程(流程控制if-else)