我遇到了在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
变量?
答案 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`""