[BATCH] Récupérer ligne fichier texte

Résolu
-Tyrael- Messages postés 103 Statut Membre -  
 fang -
Bonjour,

bon je vais poser la question ça fait 3h que je cherche et que je trouve pas ^^

Je souhaite récupérer la 2eme, la 3eme et les deux dernières lignes d'un fichier texte (oui je sais assez spécial ^^)

J'ai fais :

@echo off
set /p fichier="Glisser votre fichier ici"
set nb=0

for /f %%a in ('find /c /v "" ^<%fichier%') do (
@set nb=%%a
)

set cpt=0
for /f %%a in ('findstr /n /r . %fichier%') do (
set /a cpt+=1
if !cpt! LEQ 3 echo %%a >> fichier.log
)

echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! >> fichier.log

set /a nb=%nb%-2
for /f "skip=%nb%" %%a in ('type %fichier%') do (
echo %%a >> fichier.log
)

echo nb = %nb%
echo cpt = %cpt%
pause>nul


Le premier for sert pour compter le nombre de ligne (merci dubcek)
Le deuxième récupère, normalement, uniquement les 3 premières lignes
Le dernier récupère les 2 dernières lignes

Seul le for du milieu (pour les 3 premières lignes) ne fonctionne pas. Une idée pour m'aider ?

2 réponses

  1. LUDO
     
    voili voilou:

    @echo off
    set /p fichier="Glisser votre fichier ici"
    set nb=0

    for /f %%a in ('find /c /v "" ^<%fichier%') do (
    @set nb=%%a
    )

    set cpt=0
    setlocal enabledelayedexpansion
    for /f %%a in ('type %fichier%') do (
    set /a cpt=!cpt! + 1
    if !cpt! LEQ 3 echo %%a >> fichier.log
    )

    echo ********************************************************** >> fichier.log

    set /a nb=%nb%-2
    for /f "skip=%nb%" %%a in ('type %fichier%') do (
    echo %%a >> fichier.log
    )

    echo nb = %nb%
    echo cpt = %cpt%
    pause>nul

    a+
    6
  2. -Tyrael- Messages postés 103 Statut Membre 10
     
    Génial ça fonctionne parfaitement !
    Merci !

    Possible d'avoir un petite explication sur le
    setlocal enabledelayedexpansion

    et le
    set /a cpt=!cpt! + 1 


    SVP ?
    1
    1. fang
       
      Bonjour,

      Je suis tombé sur votre discution car je cherchais une solution au même problème.
      J'ai essayé et ça marche super.

      Par contre je ne comprend pas tout le code.

      Sur le passage ou tu comptes le nombre de ligne, pourquoi est ce que tu ajoutes ^< devant le nom du fichier ?


      Merci.
      0