Batch dos lire un fichier

Résolu
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

  1. 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
    1. Contributeur
      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
      1. 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
    2. 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
      1. 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

        Discussions similaires

        question pix mot caché

        7 réponses