为了从设备中检索我的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,但它会停止。
我该怎么做?
答案 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