Forum Clubic

(BATCH) Supprimer la premiere ligne et la derniére ligne d'un fichier texte

Bonjour,
Je dois supprimer la premiere et la derniere ligne d’un fichier texte en BATCH.
comment faire?

J’ai essayé avec sed.exe mais l’option -i sensée faire ça sous linux n’est apparement pas reconnue par le portage windows…
La commande exacte que j’ai essayé est: sed -i 1d essai.txt

merci de votre aide
Edité le 03/10/2007 à 10:30

sed -i, c’est pour modifier le fichier lui-même.
sans cette option, sed envoie son résultat sur la sortie standard que tu peux rediriger
sed 1d essai.txt > essai1.txt devrait fonctionner.
pour la première ligne (1d) c’est facile, par contre, si tu connais la solution pour la dernière, tu m’intéresses …

je connais pas trop sed mais cette commande devrait fonctionner
sed “1d” fichier.txt | sed “$d” | sed “w fichier.txt”


[quote="gcc"] si tu connais la solution pour la dernière, tu m'intéresses ... [/quote] $d

[edit] correction
Edité le 03/10/2007 à 11:19

Oui, mais ce qui m’interesse c’est de modifier le fichier lui méme. et dsl je ne sait pas supprimer la derniére ligne avec sed. :frowning:

Aprés des recherches suplementaires j’ai trouve un autre programme windows qui corespond a mon besoin, méme si il ne supprime pas vraiement la premiere ligne: switch.exe

ce programme recherche une chaine de caratere et la remplace par une autre. La premiere ligne de mes fichiers etant tt le temps la méme, ça me conviens. par contre il laisse une ligne vide quand je lui demande de remplacer “truc bidule” par rien. comment lui demander de suprimmer le saut de ligne avec?

je me suis gourré avec le redirecteur ça marche pas
ça ça fonctionne
sed “1d” fichier.txt | sed “$d” | sed “w fichier.txt”

merci pour les infos, j’ai reussi a me debrouiller.

Zarathoustra >
merci pour le $d. C’est vrai que je n’avais pas trop cherché
Il faut bien sûr aussi les guillemets comme tu les as mis ; par contre, pendant qu’on y est, il ne faut pas l’option -text pour que les lignes soient correctement reconnues en windows ?

j’ai testé
sed “1d” fichier.txt | sed “$d” | sed “w fichier.txt”
avec un bête fichier texte avec un chiffre sur chaque ligne et ça marche! donc je pense pas qu’il soit nécessaire d’utiliser une option supplémentaire

une autre petite question, toujours sous windows: comment sauvegarder tout ce qu’il s’affiche dans la console (les sorties de toutes le commandes) dans un fichier texte?

c’est quand tu tapes ta commande qu’il faut rediriger la sortie vers un fichier texte avec le symbol >
exemple: echo blabla > blabla.txt
si tu as tapé tes commandes sans rediriger la sortie vers un fichier texte tu cliques droit sur l’éditeur de commande et tu fais “séléctionner” tu séléctionnes avec ta souris puis Ctrl+c pour copier Ctrl+v pour coller

bin, le but c’est de rediriger l’ensemble la sortie de script.bat dans log.txt
je dois rajouter >log.txt a chaque commande de script.bat? (vu que yen a plein, c’est chiant…)

erf, encore un petit probléme: je veux faire une boucle for qui fait:

FOR %%A IN (ulbo bulo bolu) DO
cd c:%%A
del *.txt
tt plein de commandes
encore des commandes
fin du for

seulement je trouve pas comment lui faire faire plusieurs commandes a mon for …

oui sauf que tu utilise > la première fois et ensuite >> quand tu veux écrire à la suite
Exemple:
@echo off
echo blabla > blabla.txt
echo lalala > blabla.txt

ça va te donner dans ton fichier blabla.txt

si non il faut écrire
echo blabla > blabla.txt
echo lalala >> blabla.txt

ce qui va donner dans ton fichier blabla.txt


[quote="kalamar"] erf, encore un petit probléme: je veux faire une boucle for qui fait:

FOR %%A IN (ulbo bulo bolu) DO
cd c:%%A
del *.txt
tt plein de commandes
encore des commandes
fin du for

seulement je trouve pas comment lui faire faire plusieurs commandes a mon for …
[/quote]

ben une boucle for ça fait toutes les comandes à l’interieur de la boucle pour toutes les valeurs :neutre:
chauqe commande est exécutée l’une après l’autre
faut juste les regrouper ()
Edité le 03/10/2007 à 14:33

trouvé, il faut des parentheses:

FOR %%A IN (bulo bolu ulbo) DO (
plein de commandes
)

j’avais betement essayé des {}
Edité le 03/10/2007 à 14:34

oui voilà

dsl j’avais pas vu cette partie de ton message :ane:

normal je l’ai édité sans voir que tu avais déjà trouvé :ane:

ah ok ^^
sinon, vu que t’as l’air de bien connaitre le batch, tu sait comment mon script pourrais envoyer par mail le contenu de log.txt ?

apparement d’aprés mes recherches ya moyen de le faire en vbs, mais si je met du vbs dans mon fichier .bat, ça marche?
Edité le 03/10/2007 à 15:06

ah non je connais que quelques bases, donc là je sais pas te répondre.
cela dit tu dois pouvoir envoyer un mail sans utiliser de vbs avec la commande telnet sur le port 25
par contre faudra créer un fichier de réponse séparé du batch pour envoyer les paramètres de connexion. Mais ça dépasse mes compétences :ane:

cela dit y a pas de raison que t’arrives pas à faire appel à un vbs depuis ton batch
Edité le 03/10/2007 à 16:13

tiens va voir ici ça doit pouvoir t’aider www.robvanderwoude.com…