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

How do I pass an arbitrary command line argument to a native Windows program from a MinGW shell?

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

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

那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。