Se connecter avec
S'enregistrer | Connectez-vous

[Résolu] Extraire une chaine entre deux mots (.bat)

Dernière réponse : dans Programmation

Bonjour,

J'ai un soucis dans la création d'un .bat et je m'en sort vraiment pas malgré beaucoup de recherches...

J'ai un fichier texte sous la forme suivante :

Citation :
TEXTE INUTILE

T Col1 Col2 Col3

-- -------------------- ------------------------------ -----------------------

XX TEXTE A RECUP YYYY Texte

XX TEXTE A RECUP YYYY Texte



J'aimerais récupérer le contenu de la colonne 2 mais vu qu'il n'y a pas de délimiteurs (hormis un nombres quelconques d'espaces...) je n'y arrive pas...

Je sais que le XX et le YYYY sont des chaine fixe donc je pensais récupérer la ligne entière en sautant la première colonne avec le tokens (sa j'y arrive) et extraire la chaine qui précède YYYY.

Voila ce que j'ai pour l'instant :

  1. for /f "tokens=2* skip=4 delims=" %%a in (fichier.txt) do (
  2. echo %%a %%b
  3. )


Merci d'avance à ceux qui se pencheront sur le problème :D 

Autres pages sur : resolu extraire chaine mots bat

Lassé par la pub ? Créez un compte
Expert Programmation

Si tu sais que dans le texte, il n'y aura pas plus de 5 espaces par exemple, tu peux découper avec les espaces, et tester si chaque bout est YYYY.

Autre solution (plus simple), c'est d'utiliser un autre fichier batch qui prend en paramètre ta ligne. Ensuite, dans ce nouveau batch, tu testes les paramètres jusqu'à tomber sur YYYY. Pour faire ceci, il faut faire une boucle (sur %1 non vide) sur les paramètres avec %1 et SHIFT pour décaler les paramètres.
Et si tu ne veux faire qu'un seul batch (c'est plus complexe), tu peux utiliser une fonction récursive qui supprime chaque bout dans un fichier temporaire et former le texte en s'arrêtant sur YYYY.

Enfin dernière solution (celle que je préconise), tu installes python et abandonnes le batch. Tu fais un script qui ne doit pas faire plus de 5 lignes:
  1. a='dsgd XXX texte a recup YYY dgqfgsd'
  2.  
  3. a[ a.find('XXX')+3 : a.find('YYY')]

;) 
Lassé par la pub ? Créez un compte
Tom's guide dans le monde