Page 1 sur 1

[Résolu]Supprimer la dernière ligne d'un fichier txt

Posté : 16 mars 2012 18:26
par Gorbinator
Bonjour,
Je cherche à trouver la commande qui me permet de supprimer la dernière ligne d'un fichier .txt, sachant que la dernière ligne s'écrit toujours : "}" mais :
- il y a plusieurs ligne dans mon txt qui s'écrivent ainsi (les 4 dernières,
- il n'y a jamais le même nombre de ligne dans mes txt.

Donc est-ce que je dois compter le nombre de ligne dans chaque fichiers txt (une 30aine) afin de pouvoir leur supprimer la dernière ligne en la désignant ? Et si oui je sais pas non plus comment faire)
voilà ce que j'ai fait mais la dernière boucle ne marche pas du tout:

Code : Tout sélectionner

rem supprimer la dernière ligne de fichier.txt:

REM  compter le nombre de ligne d'un fichier.txt 
REM On utilise une boucle for, que l'on va coupler avec les commandes Type pour lire le fichier.txt 
REM et Set /a pour compter le nombre de retours chariot:
for /f "delims=" %%i in ('type fichier.txt') do set /a C+=1

REM Me retourne le nombre correct de lignes:
echo %C% lignes

REM SAUVEGARDE dans un fichier txt temporaire:
if exist fichier1.txt del fichier1.txt

REM Ne marche plus
for /f "tokens=1* delims=" %%i in (fichier.txt) do (
    if not %%iGEQ %C%  (
        echo ll >> fichier1.txt
        echo %%j
        )
    )
Ou est-ce qu'il existe une commande simple pour supprimer la dernière ligne quelle que soit la longueur du fichier ?

Merci

Re: Supprimer la dernière ligne d'un fichier txt

Posté : 17 mars 2012 12:04
par Gorbinator
J'ai trouvé la réponse sur un autre forum:

Code : Tout sélectionner

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

rem Count the lines in file
set /a count=-1
for /F %%a in (list.txt) DO set /a count=!count!+1

rem Create empty temp file
copy /y NUL tempfile.txt >NUL

rem Copy all but last line
for /F %%a in (list.txt) DO (
IF /I !count! GTR 0 (
echo %%a >>tempfile.txt
set /a count=!count!-1
)
)

rem overwrite original file, delete temp file
copy /y tempfile.txt list.txt >NUL
del tempfile.txt

rem This for testing
type list.txt