2

我在使用cmd.exePowerShell 执行命令时遇到问题。问题是命令的路径中有空格。似乎是 PowerShell 的普遍问题。以下是摘录:

$base_dir = resolve-path ..\  # this path has spaces in it 
$msdeploy = $base_dir\tools\msdeploy\msdeploy.exe

cmd.exe /c $("""$msdeploy"" -verb:sync -source:....")

我需要有msdeploy通过变量解析的路径,因为脚本用于持续集成过程。

由于空格,该命令不会执行。我试图将命令包装在""(引号)中,但仍然没有运气。在这种情况下如何格式化$msdeploy变量?

4

2 回答 2

2

在命令周围反打“”应该使它工作:

cmd.exe /c "`"$msdeploy`" -verb:sync -source:..."
于 2012-08-07T13:19:47.160 回答
2

尝试使用 $() 调用所有内容,如下所示:

$base_dir = resolve-path ..\  # this path has spaces in it 
$msdeploy = $($base_dir)\tools\msdeploy\msdeploy.exe

cmd.exe /c $("$($msdeploy) -verb:sync -source:....")

编辑:我将整个命令移到 $msdeploy 变量中,并通过转义引号来调用 $msdeploy。我发现这个链接有类似的问题,所以我调整了你的代码以匹配那里的工作。

$base_dir = resolve-path ..\
$msdeploy = $("`"" + $base_dir.Path + "\tools\msdeploy\msdeploy.exe`" -verb:sync -source:....")

cmd.exe /c "`"$msdeploy`""
于 2012-08-07T14:57:01.977 回答