2013-07-19 4 views
2

내 응용 프로그램에서 데이터베이스를 가져 와서 변경된 버전을 다시 디바이스로 푸시하는 과정을 자동화하려고하는데, 작동하지 않습니다. 예상했다.유닉스 명령어를 찾지 못한 .bat 파일에서 ADB 쉘 "run-as"

이 주제에 대한 Pilot_51의 대답을 Android ADB access to application databases without root 명령을 수동으로 실행하는 데이터베이스를 추출 할 수있었습니다. 하지만 이들을 .bat 파일에 넣으면 실행 된 모든 Unix 명령은 "찾을 수 없음"종류의 오류를 반환합니다. 여기

은 내가 오류입니다 :

실행 등 : 임원은 chmod를 666 ./database/mydatabase.db 실패; 종료 오류 : 해당 파일이나 디렉토리 여기

그리고는 .BAT 스크립트 코드이다 : 나는 ADB 쉘를 실행하려고하면

@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 

"를 실행-com.example.MyApp로 'LS' " 만 해당 폴더를 표시합니다. 은 왜일까요? chmod이 인식되지 않는 이유는 무엇입니까?

+0

@ Alex의 솔루션은 각 명령을 "run-as"로 보내야한다는 점에 유의하십시오. 즉 한 번에 둘 이상의 명령을 보낼 수 없습니다. 여러 명령을 '작은 따옴표'로 묶어 보낼 수 없습니다. –

답변

6

작은 따옴표 나 종료 명령은 필요하지 않습니다. 그냥 :

adb shell "run-as com.example.myapp chmod 666 databases/mydatabase.db" 
+0

Alex에게 감사드립니다. –