从脚本中执行subshel​​l中的命令

时间:2015-12-21 15:28:44

标签: cmd

为了从设备中检索我的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> _

它打开提示2,但它会停止。

我该怎么做?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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