Extraire première et dernière ligne en batch
Résolu
Mael730
Messages postés
50
Statut
Membre
-
Mael730 Messages postés 50 Statut Membre -
Mael730 Messages postés 50 Statut Membre -
Bonjour,
Voici mon problème, j'ai un fichier .txt dont je veux extraire la première et la dernière ligne pour les copier dans un autre fichier .txt:
4.136377E+00 -2.000195E+00 6.000000E+00
4.136230E+00 -2.000146E+00 7.000000E+00
4.135986E+00 -2.000232E+00 8.000000E+00
4.135889E+00 -2.000177E+00 9.000000E+00
4.135742E+00 -2.000171E+00 1.000000E+01
.
.
.
4.135156E+00 -2.000140E+00 1.400000E+01
4.135010E+00 -2.000183E+00 1.500000E+01
4.134766E+00 -2.000134E+00 1.600000E+01
4.134766E+00 -2.000232E+00 1.700000E+01
Je voudrais donc:
4.136377E+00 -2.000195E+00 6.000000E+00
4.134766E+00 -2.000232E+00 1.700000E+01
J'ai pensé a findstr mais comme dans la première et la dernière ligne il n'y a pas de données qui se distinguent des autres lignes je ne sais pas comment m'y prendre??
P.S: batch obligé!!
Voici mon problème, j'ai un fichier .txt dont je veux extraire la première et la dernière ligne pour les copier dans un autre fichier .txt:
4.136377E+00 -2.000195E+00 6.000000E+00
4.136230E+00 -2.000146E+00 7.000000E+00
4.135986E+00 -2.000232E+00 8.000000E+00
4.135889E+00 -2.000177E+00 9.000000E+00
4.135742E+00 -2.000171E+00 1.000000E+01
.
.
.
4.135156E+00 -2.000140E+00 1.400000E+01
4.135010E+00 -2.000183E+00 1.500000E+01
4.134766E+00 -2.000134E+00 1.600000E+01
4.134766E+00 -2.000232E+00 1.700000E+01
Je voudrais donc:
4.136377E+00 -2.000195E+00 6.000000E+00
4.134766E+00 -2.000232E+00 1.700000E+01
J'ai pensé a findstr mais comme dans la première et la dernière ligne il n'y a pas de données qui se distinguent des autres lignes je ne sais pas comment m'y prendre??
P.S: batch obligé!!
A voir également:
- Extraire première et dernière ligne en batch
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Partager photos en ligne - Guide
- Extraire une video youtube - Guide
- Supprimer dernière page word - Guide
- Mètre en ligne - Guide
5 réponses
hello
@echo off
set c=1
setlocal enableDelayedExpansion
for /f "delims=" %%a in ('type fichier.txt') do (
if !c! EQU 1 echo %%a
set /a c+=1
set d=%%a
)
echo %d%
Si tu es sous linux tu peux utiliser les commandes head et tail :
touch toto # premiere ligne head --lines=1 fichier.txt >> toto # dernier ligne tail --lines=1 fichier.txt >> toto
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'aimerai étendre le travail du script a toute mon arborescence, tu peux me dire ce qui ne vas pas dans ce que j'ai écrit:
@echo off
set c=1
setlocal enableDelayedExpansion
for /f "delims=" %%a in ('dir /b/s *.txt') do (
set E=%%~pa
if !c! EQU 1 echo %%a >> "!E!resultat.txt"
set /a c+=1
set d=%%a
)
echo %d% >> "!E!resultat.txt"
exit
Le script parcourerai donc tous les répertoires et les sous répertoires à la recherche de fichiers .txt pour en extraire la première et la dernière ligne et les copier dans un fichier résultat.
Dans le script ci dessus, le fichier résultat contient le chemin des fichiers .txt contenu dans le répertoire!!??
@echo off setlocal enableDelayedExpansion for /f "delims=" %%f in ('dir /b/s *.txt') do ( set E=%%~pf set c=1 for /f "delims=" %%a in ('type "%%f"') do ( if !c! EQU 1 echo %%a >> "!E!resultat.txt" set /a c+=1 set d=%%a ) echo !d! >> "!E!resultat.txt" )Et si je veux extraire la première ligne commencant par un chiffre?? (+ extraire la dernière ligne)
Exemple, j'ai ceci:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
4.136377E+00 -2.000195E+00 6.000000E+00
4.136230E+00 -2.000146E+00 7.000000E+00
4.135986E+00 -2.000232E+00 8.000000E+00
4.135889E+00 -2.000177E+00 9.000000E+00
4.135742E+00 -2.000171E+00 1.000000E+01
.
.
.
4.135156E+00 -2.000140E+00 1.400000E+01
4.135010E+00 -2.000183E+00 1.500000E+01
4.134766E+00 -2.000134E+00 1.600000E+01
4.134766E+00 -2.000232E+00 1.700000E+01
et je voudrai ceci:
4.136377E+00 -2.000195E+00 6.000000E+00
4.134766E+00 -2.000232E+00 1.700000E+01
J'imagine qu'il faut insérer un findstr dans la boucle:
@echo
setlocal enableDelayedExpansion
for /f "delims=" %%f in ('dir /b/s *.txt') do (
set E=%%~pf
set c=1
for /f "delims=" %%a in ('type "%%f"') do (
if !c! EQU 1 findstr "^[0-9]" echo %%a >> "!E!resultat.txt"
set /a c+=1
set d=%%a
)
echo !d! >> "!E!resultat.txt"
)
le problème est que je ne sais pas ou le mettre dans la boucle?? comme ci-dessus ca ne marche pas!
@echo off setlocal enableDelayedExpansion for /f "delims=" %%f in ('dir /b/s *.txt') do ( set E=%%~pf set c=1 for /f "delims=" %%x in ('findstr "^[0-9]" "%%f"') do ( if !c! EQU 1 echo %%x >> "!E!resultat.txt" set /a c+=1 ) for /f "delims=" %%a in ('type "%%f"') do set d=%%a echo !d! >>"!E!resultat.txt" )