如何从MinGW shell将任意命令行参数传递给本机Windows程序?
我想要一个通用的解决方案,但适用于任何有效Windows文件名的解决方案都是可以接受的。
答案 0 :(得分:1)
那个shell是Bash。 Cygwin / MSYS2 Bash可以接受Windows路径,但您需要 处理空格和反斜杠。关于反斜杠:
program 'C:\alfa.txt'
program C:\\alfa.txt
program C:/alfa.txt
关于空格:
program 'C:\alfa bravo.txt'
program C:\\alfa\ bravo.txt
program C:/alfa\ bravo.txt
如您所见,如果您提供Windows路径,这非常简单 向前。您可能遇到的唯一问题是您是否尝试提供Bash路径 到Windows本机程序:
program /tmp/alfa.txt
Windows原生程序没有/tmp
甚至/
的概念。 Cygwin / MSYS2有
cygpath
协助转换这些路径:
program $(cygpath -m /tmp/alfa.txt)
program "$(cygpath -w /tmp/alfa.txt)"
program "$(cygpath -m '/tmp/alfa bravo.txt')"
program "$(cygpath -m /tmp/alfa\ bravo.txt)"
program "$(cygpath -w '/tmp/alfa bravo.txt')"
program "$(cygpath -w /tmp/alfa\ bravo.txt)"
旁注:MinGW是一个旧项目。你应该使用Cygwin或MSYS2。