如何将任意命令行参数从 MinGW shell 传递给本机 Windows 程序?
Posted
技术标签:
【中文标题】如何将任意命令行参数从 MinGW shell 传递给本机 Windows 程序?【英文标题】:How do I pass an arbitrary command line argument to a native Windows program from a MinGW shell? 【发布时间】:2016-05-13 19:10:18 【问题描述】:我想要一个通用解决方案,但适用于任何有效 Windows 文件名的解决方案都是可以接受的。
【问题讨论】:
【参考方案1】:那个外壳是 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 程序?的主要内容,如果未能解决你的问题,请参考以下文章
如何将命令行参数传递给 spark-shell scala 脚本?
如何通过 docker run 将参数传递给 Shell 脚本