Batch dos lire un fichier

Résolu/Fermé
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 24 juil. 2012 à 16:31
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 - 24 juil. 2012 à 17:20
Bonjour,

Je fait un script dos et j'aimerai lire un fichier xml afin d'en récupérer le contenu dans une variable.

Fichier à lire:

<?xml version="1.0" encoding="UTF-8"?>
<toto>
<NAME>transfer_1343137181999</NAME>

Je veux récupérer le contenu de la balise NAME à savoir transfer_1343137181999.

Pour ce faire j'ai codé ceci:

<code>for /F "delims= tokens=1,*" %%i in ('findstr /n "^" %RESULT_FOLDER% ^| findstr "^3:"') do echo %%i

cela me permet d'obtenir ceci:
3: <NAME>transfer_1343137181999</NAME>

je n'arrive pas à délimiter pour avoir uniquement le contenu de la balise.

Par avance merci


A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 24/07/2012 à 16:42
hello
passer le résultat %%i dans une autre boucle for
C:> set var="3: <NAME>transfer_1343137181999</NAME>" 

C:> echo %var% 
"3: <NAME>transfer_1343137181999</NAME>" 

C:> for /f "delims=>< tokens=3" %a in ('echo %var%') do @echo %a 
transfer_1343137181999 

C:>
0
BeFaX Messages postés 14245 Date d'inscription mercredi 24 décembre 2008 Statut Contributeur Dernière intervention 6 août 2013 3 812
24 juil. 2012 à 16:58
Voici pour séparer les <NAME> </NAME> :

for /F "delims=<,> tokens=1,2,*" %%a in ('type fichier.xml ^| findstr "NAME"') do echo %%b
pause
Cela nous amène à : transfer_1343137181999
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
24 juil. 2012 à 17:09
j'ai essayé ta méthode et voilà mon résultat:

NAME
NAME/
NAME
NAME
NAME
NAME
NAME

De plus la balise NAME n'est pas unique dans fichier xml mais je souhaite récupérer la valeur de la balise name situé sur la 3ème ligne de mon fichier.
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
24 juil. 2012 à 16:59
j'ai essayé ceci mais je n'obtiens pas le bon résultat

for /F "delims= tokens=1,*" %%i in ('findstr /n "^" %RESULT_FOLDER% ^| findstr "^3:"') do for /f "delims=>< tokens=3" %%a in (%%i) do echo %%a 


Résultat: Le système ne peut trouver le fichier 3:.

Merci
0
remousse Messages postés 299 Date d'inscription dimanche 2 novembre 2008 Statut Membre Dernière intervention 20 novembre 2014 6
24 juil. 2012 à 17:20
c'est bon je suis passé par un fichier temporaire pour sauvegarder mon %%i et cela fonctionne parfaitement:

for /F "delims= tokens=1,*" %%i in ('findstr /n "^" %RESULT_FOLDER% ^| findstr "^3:"') do (
echo %%i >> result.tmp
for /f "delims=>< tokens=3" %%a in (result.tmp) do echo %%a
del result.tmp
)


Merci pour votre aide rapide
0