Android bat批處理自動執行adb shell命令

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 轉載請註明來自”梧桐那時雨的博客”:http://blog.csdn.net/fuchaosz/article/details/51076721

Tips:
如果覺得這篇博客對你有幫助或者喜歡博主的寫作風格,就給博主留個言或者頂一下唄,鼓勵博主創作出更多優質博客,Thank you

發佈了34 篇原創文章 · 獲贊 338 · 訪問量 90萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章