2

我正在尝试自动化从我的应用程序中提取数据库然后将更改的版本推回设备的过程,但它没有按预期工作。

按照 Pilot_51 对此主题的回答Android ADB access to application databases without root我能够手动提取运行命令的数据库。但是当我将它们放在 .bat 文件中时,执行的每个 Unix 命令都会返回“未找到”类型的错误。

这是我得到的错误:

运行方式:chmod 666 ./database/mydatabase.db 的 exec 失败;退出错误:没有这样的文件或目录

这是 .bat 脚本代码:

@echo off

:Ask
echo (A) Pull or (B) Push

set INPUT=
set /P INPUT=Input choice: %=%

If /I "%INPUT%"=="a" goto A 
If /I "%INPUT%"=="b" goto B
echo Wrong choice & goto Ask

:A
adb shell "run-as com.example.myapp 'chmod 666 ./databases/mydatabase.db; exit'; exit"
adb pull /data/data/com.example.myapp/databases/mydatabase.db C:/
goto End

:B
adb push C:/mydatabase.db /data/data/com.example.myapp/databases/mydatabase.db
adb shell "run-as com.example.myapp 'chmod 660 ./databases/mydatabase.db; exit'; exit"

:End
pause

如果我尝试仅使用“run-as com.example.myapp 'ls'”运行adb shell,它会显示文件夹。为什么ls工作,但chmod没有被识别?

4

1 回答 1

6

您既不需要单引号也不需要退出命令。做就是了:

adb shell "run-as com.example.myapp chmod 666 databases/mydatabase.db"
于 2013-07-19T19:43:46.067 回答