내 응용 프로그램에서 데이터베이스를 가져 와서 변경된 버전을 다시 디바이스로 푸시하는 과정을 자동화하려고하는데, 작동하지 않습니다. 예상했다.유닉스 명령어를 찾지 못한 .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이 인식되지 않는 이유는 무엇입니까?
@ Alex의 솔루션은 각 명령을 "run-as"로 보내야한다는 점에 유의하십시오. 즉 한 번에 둘 이상의 명령을 보낼 수 없습니다. 여러 명령을 '작은 따옴표'로 묶어 보낼 수 없습니다. –