15/11/2024

Batch

Lister le contenu d’un fichier texte en batch

I. Présentation

Il peut parfois lors de la construction d’un batch être utile de lire /écrire les données dans un ou plusieurs fichiers textes. En batch, nous utilisons pour cela la commande FOR qui à la structure d'une boucle qui s’exécutera une fois par ligne.

II. Pour lister le contenu d’un fichier texte

La commande est la suivante :

FOR /F %%i in ('type Fichier_Lecture.txt') do echo %%i >> Fichier_Ecriture.txt
  • /F signifie que nous travaillons sur un fichier (File)
  • %%i est l’identifiant de la ligne ou de l’objet que nous voulons traiter
  • In (‘type ’) . Tout ce qui suis la commande do sera répété suivant le nombre de ligne du fichier.

Dans cette commande, nous écrivons la ligne dans un autre fichier « Fichier_Ecriture.txt » avec la commande echo. La ligne que nous lisons est représentée là aussi par %%i

III. Avec plusieurs mots par ligne

La commande est sensiblement différente avec plusieurs objets par ligne. Par exemple si le fichier que nous lisons contient une syntaxe comme celle-ci :

Nom1,prenom1

Nom2,prenom2

Un objet est un nom ou un prénom (ici il y en a donc 4).

  • Pour lire le fichier et distinguer chaque mot, il faut ajouter « token=1,2 ». C'est-à-dire que lors de la lecture d’une ligne, le programme distinguera 2 parties différentes.
  • « delims= , » , nous précisons ensuite le délimiteur des parties dans une ligne, ici, une virgule.
  • Lors du traitement des données, le premier mot sera donc %%i et le second %%j (un éventuel troisième sera %%k, etc..)

Nous aurons donc la syntaxe suivante :

FOR /F "tokens=1,2* delims=, " %%i in ('type Fichier_Lecture.txt') do echo %%i %%j >> Fichier_Ecriture.txt

Il est aussi possible de distinguer le caractère de fin de ligne en mettant un eol= avant le token.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

7 commentaires sur “Lister le contenu d’un fichier texte en batch

  • Bonjour,

    Très instructif comme explication.

    Cependant, je voulais savoir s’il y avait moyen de mettre des mots en délimiteur ?

    Je m’explique, j’aurais besoin de récupérer des morceau de chaîne qui sont dans le fichier, mais le morceau de chaîne en question est précédé d’un bout de chaîne qui le définit.

    Ex : blablabla:?entity=SMT&user=SMN

    Comment faire pour dire à l’ordinateur de me récupérer la chaine SMT dans une variable entity et SMN dans une variable SMN ?

    Merci d’avance.

    Bonne journée

    Répondre
  • Bonjour, votre démonstration ressemble à ma demande mais je ne parviens pas à l’adapter correctement afin d’obtenir ce que je souhaites.

    Voici un exemple de syntaxe que j’obtiens :

    klfrehferh.rer frejgie.re

    raoult.dfkjfg ekjfhergh.ezr

    Voici ce que je désir avoir :

    klfrehferh.rer
    frejgie.re
    raoult.dfkjfg
    ekjfhergh.ezr

    Pourriez-vous me venir en aide.

    Répondre
    • Salut,

      @ echo off
      for /f « tokens=1,2 delims=  » %%i in (‘type test3.txt’) do (
      echo %%i
      echo %%j
      )

      Répondre
  • bonjour
    je ne comprend pas ou est stocké le mot trouvé
    pouriez vous eclairer ma lanterne

    Répondre
  • bonjour

    Je cherche de l’aide pour mon petit projet.
    j’ai récupéré un amstrad PPC640 avec un logiciel d’horoscope sur disquette
    j’aimerai récupérer les données des fichiers pour refaire la meme chose sur windows

    se sont des fichiers BAT qui sont lisibles mais crypté
    esce possible ?
    merci

    Répondre
  • Bonjour,

    Merci pour votre cours.
    une correction concernant le delimiteur :
    En notant : FOR /F « tokens=1,2* delims=,  » %%i in (‘type Fichier_Lecture.txt’) do echo %%i %%j >> Fichier_Ecriture.txt

    le délimiteur défini est double : la virgule « , » et l’espace  »  »

    pour n’avoir que la virgule il faut mettre :
    FOR /F « tokens=1,2* delims=, » %%i in (‘type Fichier_Lecture.txt’) do echo %%i %%j >> Fichier_Ecriture.txt

    j’ai rencontré le probleme lors de la manipulation de répertoire.

    Répondre
    • Parfait ce commentaire Cédric, merci.
      j’étais en train de m’arracher les cheveux sur cette problématique.

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.