Como escapar aspas no comando Exec no MSBuild

131

Estou tentando criar um script MSBuild que mapeia uma unidade de rede para uma letra de unidade no script, mas infelizmente o caminho para a pasta de destino inclui um espaço incorporado. O espaço incorporado faz com que o mapeamento falhe e não sei se é possível escapar de aspas no caminho. Eu tentei aspas duplas, mas o MSBuild não gosta (ou o Windows XP não gosta). Alguém sabe como codificar essa besta para que o mapa funcione?

<Exec Command="net use x: \\ofmapoly703\c$\program files\ar\iap /user:$(UserID) $(Password)"
WorkingDirectory="c:\"
ContinueOnError="false"
/>

O espaço incorporado naturalmente ocorre em "arquivos de programa".

Cyberherbalist
fonte

Respostas:

192

Use &quot;para codificar as aspas duplas que você deseja netver dentro do Commandvalor do atributo:

<Exec Command="net use x: &quot;\\ofmapoly703\c$\program files\ar\iap&quot; /user:$(UserID) $(Password)" 
WorkingDirectory="c:\" 
ContinueOnError="false" 
/> 
vladr
fonte
7
Isso não ajuda quando você o possui, Command="quot;$(PathWithTrailingBackslash)&quot;"porque ele é processado como "Path\With\Trailing\Backslash\"e \"é a sequência de escape da linha de comando para ", portanto, todos os argumentos a seguir ficam confusos.
jnm2
@ jnm2 Não foi possível adicionar outro &quot;após o segundo? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev
@TetraDev Então a barra invertida ainda está faltando e você tem uma cotação não fechada, cujo efeito não tenho certeza.
jnm2 21/02
84

Você pode usar aspas simples para o comando, por exemplo

  <Exec Command='explorer.exe "$(DestinationDir)"' IgnoreExitCode="true" />

(Da tarefa executável do MSBuild sem bloqueio )

Michael Freidgeim
fonte
Para mim, use aspas simples em vez de & quot; é uma solução melhor. Porque o ". Isso pode causar problemas quando você tenta fazer um XmlPoke, indo para o espaço de uma maneira engraçada: from & quot; para & amp;
21415 JavierD #