Cách thoát dấu ngoặc kép trong Exec Command trong MSBuild


131

Tôi đang cố gắng xây dựng tập lệnh MSBuild ánh xạ ổ đĩa mạng thành ký tự ổ đĩa trong tập lệnh, nhưng không may là đường dẫn đến thư mục đích bao gồm một không gian nhúng. Không gian nhúng khiến ánh xạ không thành công và tôi không biết liệu có thể thoát dấu ngoặc kép trên đường dẫn hay không. Tôi đã thử hai dấu ngoặc kép, nhưng MSBuild không thích nó (hoặc Windows XP không thích nó). Bất cứ ai cũng biết làm thế nào để mã hóa con thú này để bản đồ hoạt động?

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

Không gian nhúng tất nhiên xảy ra trong "tập tin chương trình".

Câu trả lời:


192

Sử dụng &quot;để mã hóa dấu ngoặc kép mà bạn muốn netthấy bên trong Commandgiá trị thuộc tính:

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

7
Điều này không giúp ích gì khi bạn có Command="quot;$(PathWithTrailingBackslash)&quot;"bởi vì nó hiển thị "Path\With\Trailing\Backslash\"\"là chuỗi thoát dòng lệnh ", vì vậy tất cả các đối số sau đây sẽ bị rối tung.
jnm2

@ jnm2 Bạn không thể thêm cái khác &quot;sau cái thứ hai? Command="quot;$(PathWithTrailingBackslash)&quot;&quot;"
TetraDev

@TetraDev Sau đó, dấu gạch chéo ngược vẫn còn thiếu và bạn có một trích dẫn không được tiết lộ, ảnh hưởng mà tôi không chắc chắn lắm.
jnm2

84

Bạn có thể sử dụng dấu ngoặc đơn cho lệnh, vd

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

(Từ tác vụ thực thi MSBuild mà không chặn )


Đối với tôi, việc sử dụng dấu ngoặc đơn thay vì & quot; đó là một giải pháp tốt hơn Bởi vì & quot;. Điều đó có thể dẫn đến các vấn đề khi bạn cố gắng thực hiện XmlPoke, nó sẽ chuyển sang các ký tự không gian theo một cách hài hước: từ & quot; đến & amp; quot;
Javier 9/2/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.