Batch: fichiers par date de modif

Résolu/Fermé
lsda26 - 21 juil. 2010 à 17:13
 lsda26 - 22 juil. 2010 à 16:40
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

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
up
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 juil. 2010 à 09:28
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
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

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

Posez votre question
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 juil. 2010 à 11:09
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
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
22 juil. 2010 à 14:08
essaye avec dir /T:W *.ba2 | find "21/10/2010"
0
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
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié par dubcek le 22/07/2010 à 14:39
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
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