90 votes

utiliser l'écho par lots avec des caractères spéciaux

C'est peut-être très facile, mais il n'y avait pas de réponses sur le net. Je veux faire écho à une ligne XML par lot dans un fichier mais il comprend mal la balise de fermeture XML pour la redirection ">". La ligne est la suivante :

 echo <?xml version="1.0" encoding="utf-8" ?> > myfile.xml

existe-t-il un moyen de donner un indice à l'analyseur par lots pour ne pas interpréter une chaîne spéciale? J'ai utilisé des guillemets doubles, mais il les écrit également dans le fichier ! Le fichier devrait ressembler à ceci après echo :

 <?xml version="1.0" encoding="utf-8" ?>

142voto

Joey Points 148544

Vous pouvez échapper aux métacaractères du shell avec ^ :

 echo ^<?xml version="1.0" encoding="utf-8" ?^> > myfile.xml

Notez que puisque echo est un shell intégré, il ne suit pas les conventions habituelles concernant les guillemets, donc le simple fait de citer l'argument affichera les guillemets au lieu de les supprimer.

23voto

walid2mi Points 1222

une autre méthode :

 @echo off

for /f "useback delims=" %%_ in (%0) do (
  if "%%_"=="___ATAD___" set $=
  if defined $ echo(%%_
  if "%%_"=="___DATA___" set $=1
)
pause
goto :eof

___DATA___
<?xml version="1.0" encoding="utf-8" ?>
 <root>
   <data id="1">
      hello world
   </data>
 </root>
___ATAD___


rem # 
rem # 

11voto

Aleks G Points 25412

Le moyen de sortir le caractère > est de le faire précéder du caractère d'échappement ^

 echo ^>

imprimera simplement

 >

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X