Batch dos lire un fichier

Résolu
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   -  
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   -
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 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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   Statut Contributeur Dernière intervention   3 825
 
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   Statut Membre Dernière intervention   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.
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   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
0
remousse Messages postés 299 Date d'inscription   Statut Membre Dernière intervention   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
0