如何将任意命令行参数从 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。
如何从 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。