Problème lors de l'entrée dans une boucle FOR
Bonjour,
Je vous contacte car je débute dans l'écriture de script Batch et que je suis confronté à un problème.
Pour le contexte, je suis en train de créer un Intranet et ce batch va me servir à notifier les utilisateurs si un fichier a été ajouté ou modifié sur l'Intranet le jour précédant (exécution du batch chaque matin).
En utilisant la méthode echo/pause, j'ai pu déterminer qu'il y avait une erreur lors de l'entrée dans la boucle FOR. Mon echo test1 passe bien et est visible en console mais pas mon echo test2. C'est possible que l'erreur soit idiote mais je m'arrache les cheveux dessus :(
De plus, je ne sais pas si la suite fonctionne vu que le script plante et comme je débute, il y a surement des améliorations possibles.
Voilà mon code, j'espère que l'un de vous va pouvoir m'aider.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
title ScriptNotifMailIntranet
cd desktop
:: On récupère la date du système
set tmps=%DATE:~-4%%DATE:~-7,2%%DATE:~-10,2%
:: On la stocke dans la variable datesys pour tester
:: la valeur du jour précédant
set datesys = %tmps% - 1
:: On initialise une variable j utilisé pour la création du mail
:: Si j = 0 On créera le fichier mail.txt
:: Sinon on ajoutera uniquement le nom du fichier à la suite du fichier
set j = 0
:: On crée un fichier liste.txt qui va récuperer la liste des fichiers découlant du
:: répertoire source ainsi que les chemins associé
dir /b /s /a-d >> liste.txt
echo test1
pause
:: Début de la boucle For
for /f %%i in (C:\Users\Bakkun\desktop\liste.txt) do (
echo test2
pause
:: On récupère la date du fichier en cours
dir /tw %%i >> datefichier.txt
set /p tmpf = < datefichier.txt
set datefichier=%tmpf:~-4%%tmpf:~-7,2%%tmpf:~-10,2%
:: On compare les deux dates si elles sont égales on rentre dans le if
if %datefichier% == %datesys% (
:: On récupère le nom du fichier
dir /b %%i >> nomfichier.txt
set /p nomfichier = < nomfichier.txt
:: j=0, on crée le début du mail
if %j% == 0(
echo Les fichiers suivants ont ete ajoutes ou modifies dernierement : >> mail.txt
:: On met j à 1 pour éviter de réécrire le début du mail
set j = 1
)
:: On ajoute maintenant le nom du fichier dans le corps du mail
echo nomfichier >> mail.txt
)
:: Pour éviter les conflits dans les prochaines itérations de la boucle
:: on supprime les fichiers temporaires de date et de nom du fichier testé
del datefichier.txt
del nomfichier.txt
)
:: Une fois que la boucle est finie, la liste ne nous ai plus d'aucune utilité
del liste.txt
:: On teste si le fichier mail.txt existe
:: Si il existe, cela veut dire qu'un fichier au moins a été positif au test
:: et necessite une notification par mail
if exist mail.txt(
:: On appelle wmailto pour envoyer le contenu de mail.txt par mail
wmailto -t"C:\Users\Bakkun\desktop\mail.txt" -s"Un Fichier a ete ajoute ou mofifie" toto@toto.com
:: Le mail envoyé, on supprime le fichier mail.txt pour éviter
:: les conflits lors des prochains lancements du script
del mail.txt
)
pause |