Назад | Перейти на главную страницу

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?

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

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

Возможно, попробуйте использовать Вызов оператор (&) вместо invoke-выражения? Я не уверен, как будет обрабатываться какой-либо вывод.

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