Batch: fichiers par date de modif

Résolu
lsda26 -  
 lsda26 -
Bonjour,

Je souhaite faire un batch pour envoyer un mail avec piece jointe (fichier log du jour) en utilisant sendmail.exe

Seulement le fichier log qui doit etre mis en pièce jointe se trouve dans un répertoire avec les fichier log des autre journée.

exemple de liste de fichier log dans mon repertoire:
20100719.log avec date de dernière modification 20/10/2010
20100720.log avec date de dernière modification 21/10/2010
20100721.log avec date de dernière modification 21/10/2010

Ce que je voudrais:
Si le jour de l'exécution du batch on est le 21/07/2010, la ou les pièces jointes devront être tous les fichiers ayant date de dernière modification 21/10/2010 (donc 2fichier dans mon exemple)

Est-ce possible en batch?

8 réponses

  1. lsda26
     
    bonjour,
    Reformulation:
    J'ai un répertoire où il y a des fichiers qui sont crées vers 3h00 du mat (création d'environ 1~3 fichiers par jour).
    On garde les fichiers de plusieurs mois en archivage dans ce répertoire.

    Et chaque jour à 4h je veut envoyer un mail contenant tout les fichiers qui ont été créé le matin même vers 3h.

    Donc je veut pouvoir mettre en pièce jointe uniquement les fichiers qui ont été crée à la date de lancement du .bat (peu importe le nom des fichiers).

    Si je savait par exemple comment copier d'un répertoire vers un autre uniquement les fichiers qui on leur date de création ou de modification=date du jour de lancement du .bat (%date%), ça m'aiderai déjà je pense.
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    pourquoi pas aussi le3 ème ?
    si la date est 21/07/2010, tu veux le fichier du jour précédent 20100720.log?
    0
  3. Xavier
     
    Bonjour,

    je vais te donner une piste (Bien sur vais pas te le faire :p

    Liste les fichier log avec la date de modification (21/10/2010)

    dir /TA *.log | find "21/10/2010"

    Copy les fichiers avec la date de modification (21/10/2010)

    Xcopy "Dossier Source/*.log" "Dossier Destination/*.log" /d:10-21-2010 /y

    Cdlt.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    quelque chose comme ça ?
    C:> echo %date%
    22/07/2010
    
    C:> echo %date:~6,4%%date:~3,2%%date:~0,2%.log
    20100722.log
    
    C:>
    0
  6. lsda26
     
    dir /TA *.log | find "21/10/2010"
    rien ne s'affiche à l'ecran

    Pour l'instant voilà ou j'en suis avec mon batch:

    set source="c:\a\"
    set dest="c:\b\"
    for /f "tokens=1-3 delims=/ " %%a in ('date/t') do set MMDDYY=%%b-%%a-%%c
    xcopy %source%*.ba2 %dest% /D:%MMDDYY% /y

    dir %dest%*.ba2 /o-d /b>%dest%temp.txt

    sendmail.exe /u:h.h@a.com /t:test_envoi_mail /m:corps.txt /f:*.ba2 /e:a@a.com /p:25 /s:smtp.fr.oleane.com /@:a.com
    pause
    del %dest%*.ba2

    Voilà maintenant, j'ai ma liste de fichier du jour dans mon fichier .txt
    présenté sous la forme:
    fichier1.ba2
    fichier2.ba2
    fichier3.ba2

    et il faudrait que je re-formate mon fichier txt sous la forme suivante:
    fichier1.ba2,fhicer2.ba2,fichier3.ba2

    comme ça je pourrait peut-etre prendre le contenu du fichier.txt re-formaté afin d'ecrire la commande pour send mail suivante:
    sendmail.exe /u:h.h@acorel.com /t:test_envoi_mail /m:corps.txt /f:fichier1.ba2,fhicer2.ba2,fichier3.ba2 /e:a@a.com /p:25 /s:smtp.fr.oleane.com /@:acorel.com
    pause
    del %dest%*.ba2
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    essaye avec dir /T:W *.ba2 | find "21/10/2010"
    0
    1. lsda26
       
      ok ça m'affiche bien les fichiers.ba2 du jour demandé
      Mais maintenant si je redirige ça dans un fichier texte il m'affichera ça en colonne.
      Afin de récupérer le contenu du fichier text pour le rentrer dans la commande sendmail il faut que j'ecrive tous ce que me ressort la commande dir (que tu m'a donné) sous la forme: fichier1.ba2,fhicer2.ba2,fichier3.ba2

      J'ai essayé avec for /f "delims=" %%i in ('type temp.txt') do echo %%i,>temp2.txt
      Mais à la sortie dans le fichier temp2.txt je n'ai que le nom du dernier fichier de la liste.
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      essaye
      C:> type f1.txt 
      fichier1.ba2 
      fichier2.ba2 
      fichier3.ba2 
      
      C:> bb 
      fichier1.ba2,fichier2.ba2,fichier3.ba2 
      
      C:> type  bb.bat 
      @echo off 
      
      setlocal enableDelayedExpansion 
      set liste= 
      for /f "delims=" %%a in ('type f1.txt ') do ( 
      set liste=!liste!,%%a 
      ) 
      echo %liste:~1,100% 
      
      C:>
      0
  8. lsda26
     
    Voilà ça fonctionne avec ce qui suit après copie des fichiers dans le répertoire

    set sujet=test envoi plusieurs fichiers
    set exp=moi@dipisoft.com
    set dest=toi@dipisoft.com
    set corps=corps.txt
    set fichiers=c:\temp\*.log

    for %%i in (%fichiers%) do (
    set fic=%%i
    call :ajoutefic
    )

    set listefichiers=%listefichiers:~1%

    sendmail.exe /m:%corps% /u:%dest% /t:%sujet% /e:%exp% /f:%listefichiers% /l

    echo %errorlevel%

    pause

    exit

    :ajoutefic
    set listefichiers=%listefichiers%,%fic%

    Merci au créateur de sendmail du site dipisoft!
    0