Programmation de Batch

Résolu/Fermé
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 - 28 sept. 2009 à 09:28
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 - 28 sept. 2009 à 14:07
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.
A voir également:

24 réponses

dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 10:58
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
dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 13:38
si tu fais
more /e +%l2% %fichier% > nouveau.txt
nouveau.txt contient les 10 lignes?
1
dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 10:01
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
)
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:07
Wahou, je pensais pas trouvé une réponse si rapide! :-) J'essaye sa tout de suite et je dirais si tout fonctionne! Merci!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 10:13
change "tokens=*" par "delims="
0
dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 10:13
change "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:24
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:24
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:24
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:24
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:24
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims="
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:29
Non, cela ne fonctionne pas, même en remplaçant "tokens=*" par "delims=", cela ne change pas mon rapport.
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:31
Forum en mousse, j'arrive plus a poster xD
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:42
Cela ne marche pas.
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 10:52
cela ne marche pas.
0
dubcek Messages postés 18777 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 30 mars 2025 5 630
28 sept. 2009 à 11:58
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%
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 12:20
cela ne marche pas, même en changeant "tokens=*" par "delims=". Mon .txt ne bouge pas.
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 12:20
on a un beau bug la xD
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 12:22
c'est bon, sa a l'air d'etre revenu... allez, c'est reparti, je ressaye.
0
zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 12:27
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.
0

Discussions similaires