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.

24 réponses

zimeau Messages postés 711 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 10 juin 2014 117
28 sept. 2009 à 13:56
j'essaye de comprendre un peu mieux ce que je fait, mais j'ai vraiment du mal a trouvé une explication claire de la ligne : for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a
malgré mes recherches avec le help. le ^ me semble bizarre...
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 à 13:58
ha oui sa marche! j'avais essayé de faire :
more /e +%l2% %fichier%
%fichier% > nouveau.txt
mais sa ne me copiais rien.
maintenant c'est parfait. Merci!
0
dubcek Messages postés 18785 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 6 mai 2025 5 631
28 sept. 2009 à 14:00
for /f %%a in ('find /v /c "" ^< %fichier%') do set /a lignes=%%a

find /v /c "" ^< %fichier% compte les lignes dans le fichier, ^ sert à protéger < sinon DOS hurle
do set /a lignes=%%a et on met le nombre de ligne dans la variable lignes
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 à 14:07
Ok je comprend mieux ^^ Merci!
0