运行bat脚本时路径引号异常导致命令执行错误的求助
问题分析与解决办法
问题根源
你遇到的双引号嵌套报错,核心原因是apktool.bat里的java_exe变量赋值与后续调用逻辑冲突:
- 当
JAVA_HOME环境变量存在时,脚本给java_exe赋值时额外加了双引号:set java_exe="%JAVA_HOME%\bin\java.exe"; - 后续执行命令时又用
"%java_exe%"包裹变量,导致最终生成嵌套双引号的路径(比如""C:\Program Files\bin\java.exe""),系统解析时会错误截断路径,出现""C:\Program' 不是内部或外部命令的提示。
解决步骤
修改apktool.bat中的JAVA_HOME判断代码块,去掉赋值时的多余引号:
原代码片段:
if defined JAVA_HOME ( set java_exe="%JAVA_HOME%\bin\java.exe" )
修改为:
if defined JAVA_HOME ( set java_exe=%JAVA_HOME%\bin\java.exe )
原理说明
后续load阶段的执行命令"%java_exe%"已经会为路径添加双引号,所以变量本身不需要再自带引号。修改后,若JAVA_HOME路径包含空格(如C:\Program Files),最终会生成正确的单双引号包裹路径:"C:\Program Files\bin\java.exe",彻底避免嵌套引号引发的解析错误。
验证
保存修改后的apktool.bat,重新执行apktool d test.apk,即可正常运行APK解码命令。
内容的提问来源于stack exchange,提问作者picup 30296
相关产品推荐
相关产品推荐

