2015-12-21 4 views
2

Для того, чтобы восстановить базу данных моего 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 открывает еще одну третью оболочку.

EDIT

Когда я выполнить скрипт:

prompt1> get_database.cmd 
prompt2> _ 

Это открывает PROMPT2, но он останавливается.

Как я могу это сделать?

+0

На самом деле, 'вводного как' открыть третью оболочку –

+0

Ваши примеры несколько сбивают с толку. Вы ищете решение в UNIX-подобной оболочке (например, '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

Вы можете попробовать прохождение команд оболочки с кавычками:

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

Можете вдавить дополнительные детали? Единую цитату '' '...' '' можно заменить внешним файлом '' adb run-as my.app.package

+0

Я отредактировал мой вопрос. Отъезд, спасибо. –

Смежные вопросы