[BATCH] Récupérer ligne fichier texte

Résolu
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. 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+
    1. 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. 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.