Créer un fichier xml à partir d'un batch ?

Résolu
Emerois -  
dna.factory Messages postés 26031 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Comme indiqué dans le sujet, j'aimerais savoir si il est possible de créer un fichier xml à l'aire d'un batch. Parce que c'est bien beau de pourvoir créer un fichier xml a l'aide de cette commande :
echo "ce que je met dans mon fichier" >> F:\NomDeMonfichier.xml
Mais avec cela je ne peut écrire juste une ligne (ou bien je ne sais pas m'en servir :/ ) Mais je n'arrive pas créer un fichier avec plusieurs lignes et surtout qui possède des :
"<ScheduleByDay>
<DaysInterval>1</DaysInterval>
</ScheduleByDay> "
Enfin les < et > , les mêmes espaces, sauté des lignes,.. Enfin vous avez compris non ? ><'
Bref voila merci ! ( excusez-moi si cette question à déjà été posée mais je n'ai pas trouvé la réponse )
Encore merci !

A voir également:

4 réponses

Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
Salut,

En ajoutant les lignes une par une :
echo '<?xml version="1.0" encoding="UTF-8"?>' > file.xml
echo '<root>' >> file.xml
echo '    <item></item>' >> file.xml
echo '</root>' >> file.xml


En une seule instruction :
echo -e '<?xml version="1.0" encoding="UTF-8"?>\n<root>\n\t<item></item>\n</root>' > file.txt


Bonne journée
0
dna.factory Messages postés 26031 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
echo "ce que je met dans mon fichier" >> F:\NomDeMonfichier.xml
Mais avec cela je ne peut écrire juste une ligne

Justement non
> (redirection simple) permet d'écrire une seule ligne (en simplifiant). même si cette ligne peut contenir des retours chariots
par contre
>> (ajout enfin de fichier) te permet d'ajouter autant de lignes que tu veux à la fin de ton fichier, sans toucher au haut de ton fichier.
Ce qui te permet de faire la version bateaux ou tu tapes les commandes à la main.

Travaillant sur la même chose, on arrive rapidement à la conclusion que faire des fonctions (surtout pour les lignes <cle>valeur</cle>) permet de gagner un temps fou, et de faciliter la lecture et la maintenance


Stop failing the turing test !
0
ryko1820 Messages postés 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
Une autre approche sous Windows et complètement utilisable en ligne de commande serait d'utiliser du VBScript comme dans cet exemple https://docs.microsoft.com/fr-fr/previous-versions/technet-magazine/cc194420(v=msdn.10)?redirectedfrom=MSDN . Cela permet de respecter la DOM XML et d'avoir quelque chose d'un peu plus évolué et rapide que l'interpréteur de commande Windows.

Tout dépends de la complexité du XML devant être produit. namespace, cdata, etc ...

Sinon on peut aussi le faire en powershell.

http://powershell.com/cs/blogs/tobias/archive/2009/02/02/xml-part-2-write-add-and-change-xml-data.aspx

Après si c'est sous linux cela ouvre le champs des possibles ...

You may stop me but you can't stop us all   ;-)
Je cherche du boulot
0
ryko1820 Messages postés 1677 Date d'inscription   Statut Membre Dernière intervention   276
 
Un autre exemple démontrant la simplicité du Powershell pour la manipulation dans Windows de XML :
https://serverfault.com/questions/26976/update-xml-from-the-command-line-windows
Enfin puisque je suis dans les pages en anglais : quelques "bests practices" exposées de façon un peu lapidaires mais pas totalement dénuées de bon sens : HOWTO Avoid Being Called a Bozo When Producing XML :-)
0
Emerois
 
merci beaucoup pour vos réponses, je vais opter pour la technique de Pilet, qui est peut-être la plus fastidieuse, mais que je trouve plutôt simple. (Et puis je ne connais pas bien le VBscript ou le shell et je n'ai pas trop le temps de me pencher la dessus)

Encore merci ! :D
0
dna.factory Messages postés 26031 Date d'inscription   Statut Modérateur Dernière intervention   1 619
 
T’inquiètes, on commence toujours pas la méthode séquentielle fastidieuse.
Et puis avec le temps, on commence à utiliser des astuces de factorisation/fonctions.
Tu y viendras quand tu seras prêt.
0