Extraire première et dernière ligne en batch
Résolu/Fermé
Mael730
Messages postés
49
Date d'inscription
vendredi 23 octobre 2009
Statut
Membre
Dernière intervention
9 février 2010
-
28 oct. 2009 à 16:10
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 - 30 oct. 2009 à 09:24
Mael730 Messages postés 49 Date d'inscription vendredi 23 octobre 2009 Statut Membre Dernière intervention 9 février 2010 - 30 oct. 2009 à 09:24
A voir également:
- Extraire première et dernière ligne en batch
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Extraire une video youtube - Guide
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Supprimer dernière page word - Guide
5 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
28 oct. 2009 à 16:29
28 oct. 2009 à 16:29
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%
ladgalen
Messages postés
143
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
6 septembre 2013
10
28 oct. 2009 à 16:20
28 oct. 2009 à 16:20
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
ladgalen
Messages postés
143
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
6 septembre 2013
10
28 oct. 2009 à 16:23
28 oct. 2009 à 16:23
oups j'ai confondu batch (DOS) et bash (linux) ... peut être que tail et head existe sous dos !
ladgalen
Messages postés
143
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
6 septembre 2013
10
28 oct. 2009 à 16:31
28 oct. 2009 à 16:31
mmmhhh
qui a dis que linux est compliqué ;)
PS : désolé pour la pollution du post
qui a dis que linux est compliqué ;)
PS : désolé pour la pollution du post
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
28 oct. 2009 à 17:10
28 oct. 2009 à 17:10
trop facile sur Linux, il y a tous les outils :-) ...on peut aussi le faire en une commande avec awk
awk 'NR==1{print $0};END{print $0}' < fichier.txt
awk 'NR==1{print $0};END{print $0}' < fichier.txt
28 oct. 2009 à 18:01
29 oct. 2009 à 09:10
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!!??
29 oct. 2009 à 10:21
29 oct. 2009 à 13:05
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!
29 oct. 2009 à 13:35