Windows下使用bat按行執行adb命令

使用*adb shell su -c *會報錯 su: invalid uid/gid ‘-c’

Part one :前情回顧

本來是想通過bat腳本跑一下adb的相關指令,需要的執行的adb 指令如下:

adb shell
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

於是,在腳本中便寫下了下面這個樣子以企圖按照預期,自動按行執行:

Part two : 期望按行執行

@echo off
adb shell
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

結果腳本會阻塞在,adb shell 狀態,不會按行執行

Part three : 使用 su -c

經過搜索和查詢,網上大部分推薦的是這個樣子:

adb shell su -c "setprop service.adb.tcp.port 5555"
adb shell su -c "stop adbd"
adb shell su -c "start adbd"

期待能成功。
然而,運行之後就呵呵了…
在這裏插入圖片描述

可能在別的手機上su -c是可以的,也許是跟system img版本號有關係

Part four : 解決問題

通過上面的錯誤,便開始了大量的搜索,百度上搜索到的基本都是建議使用su -c,於是FQ了一下,也沒有找到有效的信息。無奈只能搜索一下adb shell su命令大全,就發現了su 0這個解決了我需求的方案。在此記錄一下:
修改之後的bat腳本內容如下:

adb shell su 0 "setprop service.adb.tcp.port 5555"
adb shell su 0 "stop adbd"
ping -n 6 www.baidu.com
adb shell su 0 "start adbd"
ping -n 6 www.baidu.com

注:中間ping幾次其他的主機,是爲了adbd的重啓切換爭取時間。
su 0 : su後面跟的是數字‘ 零’ ,不是字母 O

Part five :總結

1、由於adb shell指令在bat腳本單獨運行,會進入設備的shell狀態且是阻塞狀態,導致後面幾行命令不會按照預期的按行執行,所以直接通過Part one中的方案是不可行的。
2、su -c是Linux中支持的指令,但是並不是所有的Linux指令都會在Android中被支持
3、su 0是Android中su執行後續指令的一種標準寫法,大家可以驗證一下不通型號的手機是否都支持

謝謝閱讀!!!祝:工作順利,生活愉快!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章