Одним из простых решений является использование отложенного расширения, поскольку оно не меняет никаких специальных символов.
set "line=<?xml version="1.0" encoding="utf-8" ?>"
setlocal EnableDelayedExpansion
(
echo !line!
) > myfile.xml
РЕДАКТИРОВАТЬ: Другое решение состоит в том, чтобы использовать исчезающую кавычку .
Эта техника использует кавычки для цитирования специальных символов
@echo off
setlocal EnableDelayedExpansion
set ""="
echo !"!<?xml version="1.0" encoding="utf-8" ?>
Трюк работает, так как в фазе специальных символов начальная кавычка в !"!
сохранит оставшуюся часть строки (если других кавычек нет).
И в отложеннойВ фазе расширения !"!
будет заменено содержимым переменной "
(одиночная кавычка является допустимым именем!).
Если вы работаете с отключенным отложенным расширением, вы можете использовать FOR /F
цикл вместо
for /f %%^" in ("""") do echo(%%~" <?xml version="1.0" encoding="utf-8" ?>
Но так как это немного раздражает, вы также можете создать макрос.
set "print=for /f %%^" in ("""") do echo(%%~""
%print%<?xml version="1.0" encoding="utf-8" ?>
%print% Special characters like &|<>^ works now without escaping