Batch dos lire un fichier [Résolu/Fermé]

Signaler
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
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


4 réponses

Messages postés
18242
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
13 juin 2021
5 305
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:>
Messages postés
14200
Date d'inscription
mercredi 24 décembre 2008
Statut
Contributeur
Dernière intervention
6 août 2013
3 742
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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.
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
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