我将Linux脚本移植到Windows& MinGW,通过ADB访问Android手机。
有时我需要将Android的文件路径作为ADB命令行选项传递。
但是,在调用ADB.exe时,MinGW会将其转换为Windows'路径。
例如,
adb shell cat /proc/version
翻译如下,产生"没有这样的文件或目录" Android中的错误。
adb shell cat C:/Program Files (x86)/Git/proc/version
我发现双引号有助于防止这种情况发生。
adb shell "cat /proc/version"
但是否有任何全局siwtches或env变量来阻止MinGW进行此转换?
我使用的MinGW附带了" Git for Windows"封装
编辑:我也打了另一个scnario,我不能用双引号解决。
$ adb push test1.mp3 /data
failed to copy 'test1.mp3' to 'C:/Program Files (x86)/Git/data': No such file or directory
$ adb push test1.mp3 "/data"
failed to copy 'test1.mp3' to 'C:/Program Files (x86)/Git/data': No such file or directory
答案 0 :(得分:4)
刚刚发现双斜线就是魅力。
答案 1 :(得分:2)
但是有没有任何全局开关或env变量来阻止MinGW 这个转换?
是。使用此环境变量:
MSYS_NO_PATHCONV=1
e.g。
MSYS_NO_PATHCONV=1 adb shell cat /proc/version
注意:程序可能无法正常运行,他们期望Windows路径。
要解决此问题,您可以使用documentation page中提到的转义(请查看底部):
adb shell cat //proc\version
规则:参数的第一个/
重复,其余/
替换为\
根据使用的转义(例如在.sh脚本中),您可能需要复制\
字符:
adb shell cat //proc\\version
这样,只有你用额外的/
前缀写的参数才会被传递,而不会转换为Windows路径。
答案 2 :(得分:0)
拜托,我们可以在这里获得术语吗? MinGW没有路径翻译,例如你描述的;它是由MinGW.org作为MinGW的伴侣提供的 MSYS 构建环境,这样做,所以我猜你实际上是在使用Git for Windows提供的MSYS版本。
我很高兴您找到了适用于您的情况的神奇子弹,但请注意,在某些极端情况下,此次"双击"诀窍不够;如果您遇到其中一个,您可能希望将Cygwin视为Windows上的替代托管shell。