Eine einfache Lösung ist die verzögerte Erweiterung, da dadurch keine Sonderzeichen geändert werden.
set "line=<?xml version="1.0" encoding="utf-8" ?>"
setlocal EnableDelayedExpansion
(
echo !line!
) > myfile.xml
BEARBEITEN: Eine andere Lösung besteht darin, ein verschwindendes Zitat zu verwenden .
Diese Technik verwendet ein Anführungszeichen, um die Sonderzeichen zu zitieren
@echo off
setlocal EnableDelayedExpansion
set ""="
echo !"!<?xml version="1.0" encoding="utf-8" ?>
Der Trick funktioniert, da in der Sonderzeichenphase das führende Anführungszeichen !"!
den Rest der Zeile beibehält (wenn keine anderen Anführungszeichen vorhanden sind).
Und in der verzögerten Expansionsphase wird das !"!
Testament durch den Inhalt der Variablen ersetzt "
(ein einfaches Anführungszeichen ist ein legaler Name!).
Wenn Sie mit deaktivierter verzögerter Erweiterung arbeiten, können Sie FOR /F
stattdessen eine Schleife verwenden.
for /f %%^" in ("""") do echo(%%~" <?xml version="1.0" encoding="utf-8" ?>
Da dies jedoch etwas nervig erscheint, können Sie auch ein Makro erstellen.
set "print=for /f %%^" in ("""") do echo(%%~""
%print%<?xml version="1.0" encoding="utf-8" ?>
%print% Special characters like &|<>^ works now without escaping