如何从MinGW shell将任意命令行参数传递给本机Windows程序?

时间:2016-05-13 19:10:18

标签: windows shell mingw msys

如何从MinGW shell将任意命令行参数传递给本机Windows程序?

我想要一个通用的解决方案,但适用于任何有效Windows文件名的解决方案都是可以接受的。

1 个答案:

答案 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。