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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d’IT-Connect.fr et d’Information-security.fr.
Auditeur sécurité chez Amossys.

    mickael a publié 477 articles sur IT-Connect.See all posts by mickael

    5 réactions sur “Lister le contenu d’un fichier texte en batch

    • 18/04/2016 à 11:52
      Permalink

      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
    • 15/05/2016 à 11:53
      Permalink

      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
      • 11/08/2017 à 13:04
        Permalink

        Salut,

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

        Répondre
    • 27/06/2017 à 14:13
      Permalink

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

      Répondre
    • 15/08/2017 à 19:06
      Permalink

      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

    Laisser un commentaire

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