134
votes

I'm trying to build an MSBuild script that maps a network drive to a drive letter in the script, but unfortunately the path to the target folder includes an embedded space. The embedded space causes the mapping to fail, and I don't know if it is possible to escape quotes around the path. I've tried double quote marks, but MSBuild doesn't like it (either that or Windows XP doesn't like it). Anyone know how to code this beast so the map works?

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

The embedded space of course occurs in "program files".

2

2 Answers

199
votes

Use &quot; to encode the double quotes that you want net to see inside the Command attribute value :

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

You can use single quotes for command ,e.g.

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

(From MSBuild exec task without blocking)