Batch: fichiers par date de modif
Résolu/Fermé
A voir également:
- Batch lire la date de modification fichier
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Lire fichier bin - Guide
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.
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
22 juil. 2010 à 09:28
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?
pourquoi pas aussi le3 ème ?
si la date est 21/07/2010, tu veux le fichier du jour précédent 20100720.log?
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
22 juil. 2010 à 11:09
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:>
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
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
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
22 juil. 2010 à 14:08
22 juil. 2010 à 14:08
essaye avec dir /T:W *.ba2 | find "21/10/2010"
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.
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.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
Modifié par dubcek le 22/07/2010 à 14:39
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:>
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!
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!