L'astuce d'utiliser le comportement de l'accent circonflexe.
Aussi expliqué à Long commandes réparties sur plusieurs lignes dans Vista/DOS batch (.chauve-souris) fichier
Le signe est un caractère d'échappement pour le caractère suivant, ou à l'extrémité de la ligne, il est utilisé comme multiligne caractère, mais c'est presque la même.
À l'extrémité de la ligne de simplement s'échappe le caractère suivant, et dans ce cas, l' <Linefeed>
, mais il y a une fonctionnalité cachée, de sorte que si le caractère d'échappement est un <LF>
il est ignoré et le caractère suivant est lu et s'est échappé, mais ce personnage sera toujours échappé, même si c'est aussi un <LF>
.
Maintenant vous pouvez comprendre
set NLM=^
rem Two empty lines are required here
La NLM-Variable contient exactement un <LF>
caractère
Mais si vous essayez de l'utiliser avec echo Line1%NLM%Line2
il échoue, que l'analyseur s'arrête l'analyse à un seul <LF>
.
Mais cela fonctionne
echo Line1^
Line2
Si vous avez besoin d'ajouter un échappé de saut de ligne dans la ligne, et qui est le NL-Variable.
Le NL-Variable se compose de seulement trois caractères.
NL=^<LF><LF>
Et si cela est élargi crée un seul s'échappe <LF>
comme le premier <LF>
après le signe sera ignoré.
Btw. À mon avis, il est beaucoup plus facile d'utiliser des sauts de ligne avec l'expansion retardée, comme il n'est pas nécessaire pour échapper à quoi que ce soit.
setlocal EnableDelayedExpansion
set NLM=^
echo Line1!NLM!Line2
EDIT: Ajout de certains conseils utiles à l'aide de l' <LF>
1) l'Utiliser comme retour à la ligne dans un echo
setlocal EnableDelayedExpansion
set LF=^
echo Line1!LF!Line2
2) l'Utiliser pour diviser les commandes dans une parenthèse bloc
setlocal EnableDelayedExpansion
set LF=^
(
echo Line1%LF%set x=4%LF%echo !x!%LF%
)
3) Créer un (presque) vides en fin de vie-chararcter dans un FOR /F en boucle,
en tant que <LF>
est le séparateur de ligne une EOL <LF>
est le même que le vide.
FOR /F ^"eol^=^
delims^=^" %%a in (myFile.php) do echo %%a
4) Utilisation de la LF pour le fractionnement du texte dans un FOR /F en boucle
setlocal EnableDelayedExpansion
set LF=^
rem ** Two empty lines required
set "var=Content1;Content2"
FOR /F "delims=" %%a in ("%var:;=!LF!%") do (
echo %%a
)