2015-12-21 32 views
2

執行內部子shell命令爲了從設備檢索我的Android應用程序的數據庫,我執行這個命令:從腳本

prompt1> adb shell 
prompt2> run-as my.app.package 
prompt3> chmod -R 777 databases 
prompt3> exit 
prompt2> cat /data/data/my.app.package/databases/database.db > /sdcard/database.db 
prompt2> exit 
prompt1> adb pull /sdcard/database.db 

我想這個過程自動化,所以我已經創建了這些命令的腳本。問題是,當我執行它時,打開adb shell並且不執行下一個命令。

請注意run-as my.app.package打開另一個第三個shell。

編輯

當我執行該腳本:

prompt1> get_database.cmd 
prompt2> _ 

它打開PROMPT2,但它停止。

我該怎麼辦?

+0

事實上,'運行as'開設第三外殼 –

+0

你的例子有點令人困惑。你是在類似UNIX的shell(比如'sh','csh'等)還是Windows的''CMD'中尋找解決方案? –

+0

對不起,我的錯。我需要一個CMD解決方案。 –

回答

0

最後,我已經解決了這種方式:

@echo off 
IF "%1" == "" goto USAGE 
IF "%2" == "" goto USAGE 

adb shell "run-as %1 chmod -R 777 /data/data/%1/databases; cat /data/data/%1/databases/%2 > /sdcard/%2" 
adb pull /sdcard/%2 
goto END 

:USAGE 
@echo Usage: %0 ^<package^> ^<file_name^> 

:END 
1

您可以嘗試傳遞命令到shell引號:

adb shell " 
adb run-as my.app.package 'chmod -R 777 databases; exit' 
cat /data/data/my.app.package/databases/database.db > /sdcard/database.db 
exit 
" 
adb pull /sdcard/database.db 
+0

對不起,它不起作用 –

+0

你能添加一些細節嗎?單引號'''...'''可以用''chmod -R 777數據庫''作爲my.app.package

+0

我編輯了我的問題。退房,謝謝。 –