Posez votre question Signaler

Extraire première et dernière ligne en batch [Résolu]

Mael730 41Messages postés 23 octobre 2009Date d'inscription - Dernière réponse le 30 oct. 2009 à 09:24
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é!!
Lire la suite 

Extraire première et dernière ligne en batch »

19 réponses
Réponse
+1
moins plus
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


Ajouter un commentaire
Réponse
+0
moins plus
oups j'ai confondu batch (DOS) et bash (linux) ... peut être que tail et head existe sous dos !
greg - 28 oct. 2009 à 18:43
comment peut-pon sortir des aneries pareilles ?!
on n'a pas à se demander "peut-être"....
On demande à google et on a la réponse si l'on n'est pas fichu de lire l'aide en ligne
Grave.
Ajouter un commentaire
Réponse
+0
moins plus
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%
Mael730- 29 oct. 2009 à 17:28
Ok pour ne pas modifier le %%f et redéfinir la variable N moins les 5 derniers caractères. ton exemple fonctionne bien dans la commande DOS mais dans mon .bat ca ne marche pas??

@echo

setlocal enableDelayedExpansion
for /f "delims=" %%f in ('dir /b/s *.cor') do (
set E=%%~pf
set N=%%~nf
set M=%N:~0,-5%
set c=1
for /f "delims=" %%x in ('findstr "^[0-9]" "%%f"') do (
if !c! EQU 1 echo %%x >> "!E!resultat_!M!.txt"
set /a c+=1
)
for /f "delims=" %%a in ('type "%%f"') do set d=%%a
echo !d! >>"!E!resultat_!M!.txt"
)

Le fichier résultat porte ce nom: resultat_~0,5.txt au lieu de: resultat_Dech I10_1h_Un1ch5.txt

???
dubcek- 30 oct. 2009 à 08:26
juste, il y a des différences qu'on oublie toujours entre batch et interactif, essaye
set M=!N:~0,-5!
par contre, il ajoute un espace, je ne sais pas pourquoi
Mael730- 30 oct. 2009 à 09:24
Ok, merci dubcek!

J'en profite pour te demander de regarder ce topic : http://www.commentcamarche.net/...
J'ai un sérieux doute que ce soit faisable en batch!?
Ajouter un commentaire
Réponse
+0
moins plus
mmmhhh

qui a dis que linux est compliqué ;)

PS : désolé pour la pollution du post
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « extraire première et dernière ligne en batch » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?