如何在Windows的.bat文件中运行指定的adb shell su命令?
解决批处理文件中ADB SU命令失效的问题
看起来你遇到的核心问题是Windows批处理(.bat)的语法解析规则和直接在CMD中执行命令的差异,加上可能的输入错误(那个-褋明显是乱码),导致命令无法正确传递到Android的shell环境中。下面给你一步步解决:
首先纠正关键错误
你写的su -褋是乱码,正确的参数应该是su -c——这个参数用来告诉su“执行后面跟的命令”,是Android su命令的标准用法。
批处理中的正确写法
在批处理文件中,CMD会优先解析特殊字符(比如>、引号),所以我们需要正确转义这些内容,确保命令原封不动传递到Android的shell里。推荐两种可行的写法:
写法1(更简洁,利用Android Shell的单引号)
adb shell "su -c 'echo AT+EGMR=1,7,\"558378919678440\" > /dev/radio/pttycmd1'"
- 外层用双引号把整个Android shell命令传给
adb shell,避免CMD解析内部的特殊字符 - Android shell中用单引号包裹echo的内容,里面的双引号用
\转义(这是Linux/Android shell的转义规则) >会被正确传递到Android shell,实现向/dev/radio/pttycmd1写入内容
写法2(严格遵循CMD批处理的引号转义规则)
adb shell "su -c ""echo 'AT+EGMR=1,7,""558378919678440""' > /dev/radio/pttycmd1"""
- 在CMD批处理中,要在双引号内部使用双引号,需要写成两个连续的双引号
"" - 这种写法完全按照CMD的规则转义,确保命令被正确解析
为什么之前的写法失败?
- 乱码的su参数:
-褋不是有效的su参数,导致su无法识别要执行的命令 - 引号嵌套错误:批处理中没有正确转义引号,导致CMD提前截断命令,无法完整传递到Android shell
- 重定向符被解析:你之前的写法中,
>被CMD当成了批处理的输出重定向,而不是传递给Android shell执行
额外注意事项
- 确保你的设备已经获取root权限,并且
su命令可以正常执行(手动在CMD里能运行原命令,这一点应该没问题) - 如果还是失败,可以尝试在命令前加上
@echo off,避免批处理输出多余内容干扰调试
内容的提问来源于stack exchange,提问作者MyNameIs
相关产品推荐
相关产品推荐

