Powershell CMD.exe和路径中的空格

时间:2012-08-07 12:33:13

标签: powershell

我遇到了在PowerShell中使用cmd.exe执行命令的问题。问题是命令的路径中有空格。似乎是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变量?

2 个答案:

答案 0 :(得分:2)

命令后面的“勾选”应该可以使它工作:

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

答案 1 :(得分: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。我发现有类似问题的this链接,因此我调整了您的代码以匹配那里的工作。

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

cmd.exe /c "`"$msdeploy`""