ProcessBuilder无法使用路径中空格的统一参数运行

时间:2015-04-27 21:14:57

标签: java groovy processbuilder

我正在尝试传递ProcessBuilder的几个参数,这些参数在开头需要标记参数( - )。我的命令行命令看起来像这样,并且在cmd中运行时运行正常。

msdeploy.exe -verb:sync -source:contentPath='\My\Folder with Space\Path' -dest:auto

我的项目使用groovy脚本并实现ProcessBuilder来运行命令。 ProcessBuilder将文件夹路径视为具有空格,因此,通过按预期工作,将arg3放在引号中。

ProcessBuilder传递参数:

arg1 = msdeploy.exe
arg2 = -verb:sync
arg3 = -source:contentPath='C:\My\Folder with Space\Path'
arg4 = -dest:auto

ProcessBuilder将命令解释并运行为:

msdeploy.exe -verb:sync "-source:contentPath='C:\My\Folder with Space\Path'" -dest:auto

返回以下错误:

Error: Unrecognized argument '"-source:contentPath=C:\Program Files\udeploy\agent"'. All arguments must begin with "-".

转义字符无法解决此问题,因为它仍会识别空格,即使它们已被转义并在整个-source参数周围添加引号。短划线( - )必须首先出现在msdeploy参数中。

我需要知道如何在ProcessBuilder中使用带有开头标记的空格来运行这样的统一参数,例如' - '。

1 个答案:

答案 0 :(得分:0)

当我有义务在Windows工作时,我的CLI是Cygwin,部分是因为这样的问题。等效命令是:

msdeploy.exe -verb:sync -source:contentPath="/cygdrive/c/My/Folder\ with\ Space/Path"

文件分隔符是正斜杠,空格必须使用反斜杠进行转义。让猜测成功。

相关问题