[CMD] Lire un fichier texte

C'est un fait : OS équipant 90 % des ordinateurs de la planète. Quelques informations, trucs ou astuces afin de mieux l'exploiter.
Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

[CMD] Lire un fichier texte

Messagepar Bidouille » 24 mai 2007 12:51

Lecture de fichier texte en mode console

Voici quelques exemples pour accéder facilement à un fichier texte en utilisant une boucle for ... in ... do :

Code : Tout sélectionner

for /f "delims=" %%a in (fichier.txt) do ...
for /f "delims=" %%a in ('type fichier.txt') do ...
for /f "delims=" %%a in ('more ^< fichier.txt') do ...


Attention cette méthode ne reconnait pas les fichiers au format Unicode.

On part du principe que vous avez un fichier texte que l'on nommera nombre.txt et contenant les données suivantes :
un
deux
trois
quatre
cinq
six
sept
huit
neuf
dix


***

Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

Messagepar Bidouille » 24 mai 2007 12:53

Affichage de la 1ere ligne

Code : Tout sélectionner

@echo off
set "ligne="
for /f "delims=" %%a in ('more ^< nombre.txt') do (
      if not defined ligne set ligne=%%a )
echo %ligne%

Résultat :
un

***

Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

Messagepar Bidouille » 24 mai 2007 12:54

Affichage des n premières lignes (ici 4)

Code : Tout sélectionner

@echo off
set "lignes=4"
set i=-1
set "ok="
for /f "delims=" %%a in ('more ^< nombre.txt') do (
  set/a i+=1 & for /f %%z in ('echo/%%i%%') do (
    if "%%z"=="%lignes%" set ok=1
  )
  if not defined ok echo %%a
)

Résultat :
un
deux
trois
quatre


Note : pour avoir les 3 premières lignes, il vous suffit de modifier

Code : Tout sélectionner

set "ligne=3"


***

Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

Messagepar Bidouille » 24 mai 2007 12:57

Affichage de la dernière ligne :

Code : Tout sélectionner

@echo off
for /f "delims=" %%a in ('more ^< nombre.txt') do set "fin=%%a"
echo %fin%


Résultat : dix

***

Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

Messagepar Bidouille » 24 mai 2007 13:00

Affichage des n dernières lignes :

Code : Tout sélectionner

@echo off
set "lignes=3"
for /f %%a in ('find/c /v "" ^< nombre.txt') do set/a skip=%%a-lignes
for /f "delims=" %%a in ('more/e +%skip% ^< nombre.txt') do (
  echo %%a )


Résultat :
huit
neuf
dix


***

Bidouille
Webmestre
Messages : 374
Enregistré le : 21 mai 2007 16:08

Messagepar Bidouille » 24 mai 2007 13:02

Affichage d'une ligne en particulier (ici la 5e) :

Code : Tout sélectionner

@echo off
set LigneNo=5
set "ligne="
set/a LigneNo-=1
for /f "delims=" %%a in ('more/e +%LigneNo% ^< nombre.txt') do (
  if not defined ligne set "ligne=%%a"
)
echo %ligne%


Résultat : cinq

***


Retourner vers « Windows »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité