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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager