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

4 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    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
  2. BeFaX Messages postés 16334 Statut Contributeur 3 863
     
    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. 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
  3. 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
  4. 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