Một giải pháp dễ dàng là sử dụng mở rộng trễ, vì điều này không thay đổi bất kỳ ký tự đặc biệt nào.
set "line=<?xml version="1.0" encoding="utf-8" ?>"
setlocal EnableDelayedExpansion
(
echo !line!
) > myfile.xml
EDIT: Một giải pháp khác là sử dụng một báo biến mất.
technic này sử dụng một dấu ngoặc kép để trích dẫn các nhân vật đặc biệt
@echo off
setlocal EnableDelayedExpansion
set ""="
echo !"!<?xml version="1.0" encoding="utf-8" ?>
Các công trình lừa, như trong những nhân vật đặc biệt giai đoạn dấu ngoặc kép hàng đầu trong !"!
sẽ gìn giữ phần còn lại của dòng (nếu có aren không trích dẫn khác).
Và trong giai đoạn mở rộng bị trì hoãn, !"!
sẽ được thay thế bằng nội dung của biến số "
(một trích dẫn đơn là tên hợp pháp!).
Nếu bạn đang làm việc với việc mở rộng bị trễ bị vô hiệu hóa, bạn có thể sử dụng vòng lặp FOR /F
thay thế.
for /f %%^" in ("""") do echo(%%~" <?xml version="1.0" encoding="utf-8" ?>
Nhưng khi có vẻ là một chút khó chịu, bạn cũng có thể xây dựng một macro.
set "print=for /f %%^" in ("""") do echo(%%~""
%print%<?xml version="1.0" encoding="utf-8" ?>
%print% Special characters like &|<>^ works now without escaping
thể trùng lặp của [Thoát dấu ngoặc nhọn trong một dấu nhắc lệnh Windows] (http://stackoverflow.com/questions/251557/escape-angle-brackets-in-a- Windows-command-prompt) – Helen
Bản sao có thể có của [Thoát ký tự hàng loạt] (http://stackoverflow.com/questions/6828751/batch-character-escaping) –