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?

2
задан 3 February 2016 в 04:22
2 ответа
$msbuild = "${env:ProgramFiles(x86)}" + '\MSBuild\14.0\Bin\MSBuild.exe'

Попробуй сюда. Пробел нет, так что путь должен быть в порядке.

3
ответ дан 3 December 2019 в 09:33

Возможно, попробуйте использовать оператор Call ( &) вместо вызывающего выражения? Хотя я не уверен, как будет обрабатываться любой вывод.

$solution = "test.sln"
$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe"
Exec { & $msbuild $solution /t:clean}
Exec { & $msbuild $solution }
2
ответ дан 3 December 2019 в 09:33

Теги

Похожие вопросы