Programmation de Batch

[Résolu/Fermé]
Signaler
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
-
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
-
Bonjour,
Je fait une sauvegarde de mes fichiers par tache planifié en exécutant un Batch que j'ai créer. J'utilise Robocopy pour copier mes fichiers et générer un rapport que je reçois par mail chaque jour, et j'utilise Blat pour l'envoie par mail.
Voici le batch :

del /F C:\Bat\RapportServeur1.txt
robocopy E:\ "\\serveur2\d$" /MIR /R:0 /log:RapportServeur1.txt
blat RapportServeur1.txt -to nom@mail.com

La 1ere ligne supprime le rapport précèdent, la 2eme copie les fichiers et génère le rapport et la 3eme envoie le rapport par mail. Mon problème est qu'il y a un grand nombre de fichiers traité par robocopy et que le rapport fait 2Mo, ce qui est plutôt lourd pour un mail. Je n'ai pas besoin du rapport complet, seulement des 10 dernières ligne qui donne le nombre de fichier copier et le nombre d'échoué. Sauriez vous comment je pourrais extraire la fin de mon RapportServeur1.txt et le copier dans un autre .txt?

Merci.

24 réponses

Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
il y a plus simple avec la commande more

@echo off

set fichier=RapportServeur1.txt 
set nombre=10
for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a
setlocal enableDelayedExpansion
set /a l2=!lignes! -%nombre%
more /e  +%l2% %fichier%
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
si tu fais
more /e +%l2% %fichier% > nouveau.txt
nouveau.txt contient les 10 lignes?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
hello
ce script affiche les 10 dernières lignes, on compte le nombre de lignes puis on traite le fichier en affichant les numéros de lignes > nombre de lignes - nombre de lignes à afficher

@echo off

set fichier=RapportServeur1.txt 
set nombre=10
for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a
setlocal enableDelayedExpansion
set l=1
set /a l2=!lignes! -%nombre%
for /f "tokens=*" %%p in (%fichier%) do ( set /a l=!l!+1
if !l! GEQ !l2! echo %%p
)
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Wahou, je pensais pas trouvé une réponse si rapide! :-) J'essaye sa tout de suite et je dirais si tout fonctionne! Merci!
Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
change "tokens=*" par "delims="
Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
change "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims=", cela ne change pas mon rapport.
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Forum en mousse, j'arrive plus a poster xD
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
Cela ne marche pas.
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
cela ne marche pas.
Messages postés
18286
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
15 octobre 2021
5 397
on peut faire plus simple avec la commande more

@echo off

set fichier=RapportServeur1.txt 
set nombre=10
for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a
setlocal enableDelayedExpansion
set /a l2=!lignes! -%nombre%
more /e  +%l2% %fichier%
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
cela ne marche pas, même en changeant "tokens=*" par "delims=". Mon .txt ne bouge pas.
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
on a un beau bug la xD
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
c'est bon, sa a l'air d'etre revenu... allez, c'est reparti, je ressaye.
Messages postés
710
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
10 juin 2014
115
bon, je vais allé mangé en attendant que ccm regle leur probléme de forum. j'ai essayé d'ajouter

@echo off

set fichier=RapportServeur1.txt
set nombre=10
for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a
setlocal enableDelayedExpansion
set /a l2=!lignes! -%nombre%
more /e +%l2% %fichier%

mais mon txt ne change toujour pas.