Windows:在命令中转义空格

Windows:在命令中转义空格

我正在尝试执行一个包含空格的路径的简单命令

$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { iex "$msbuild `"$solution`" /t:clean"}
Exec { iex "$msbuild `"$solution`"" }

这会引发错误

Exception: The term 'x86' is not recognized as the name

这似乎是因为$msbuild命令没有正确引用。尝试引用命令(并使用反引号转义引号),但仍然没有成功

$msbuild   = "`"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe`""

如何正确转义/引用上述内容?Powershell 中的转义规则是什么?

答案1

$msbuild = "${env:ProgramFiles(x86)}" + '\MSBuild\14.0\Bin\MSBuild.exe'

试试这个方法。没有空格,所以路径应该没问题。

答案2

也许尝试使用称呼操作员 (&) 而不是invoke-expression?但我不确定输出会被如何处理。

$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { & $msbuild $solution /t:clean}
Exec { & $msbuild $solution }

相关内容