Windows: espaços de escape no comando

2

Estou tentando executar um comando simples com caminho contendo espaços

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

Isso gera um erro

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

, o que parece ser porque o comando $msbuild não está corretamente citado. Tentei citando o comando (e escapando citações com backticks), mas ainda sem sorte

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

Como você pode escapar / citar corretamente acima? Quais são as regras de fuga em Powershell?

    
por ubi 03.02.2016 / 03:22

2 respostas

3

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

Tente assim. Sem espaços, então o caminho deve ficar bem.

    
por 03.02.2016 / 08:17
2

Talvez tente usar o operador Ligar ( & ) em vez de invocar a expressão? Não tenho certeza de como qualquer saída será processada.

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

Tags