' Script VBScript pour surveiller un répertoire et envoyer un email pour chaque nouveau PDF
' Auteur: Assistant Claude
' Version: 1.0
Option Explicit
' === CONFIGURATION - À MODIFIER SELON VOS BESOINS ===
Const REPERTOIRE_SURVEILLE = "C:\MonRepertoire\PDFs" ' Chemin du répertoire à surveiller
Const EMAIL_DESTINATAIRE = "destinataire@exemple.com" ' Email du destinataire
Const EMAIL_EXPEDITEUR = "expediteur@exemple.com" ' Votre adresse email (optionnel)
Const SUJET_EMAIL = "Nouveau fichier PDF détecté" ' Sujet de l'email
'Const INTERVALLE_VERIFICATION = 5000 ' Intervalle en millisecondes (5 secondes)
' Variables globales
Dim fso, dossier, fichiersPrecedents
Set fso = CreateObject("Scripting.FileSystemObject")
Set fichiersPrecedents = CreateObject("Scripting.Dictionary")
' Fonction principale
Sub Main()
WScript.Echo "=== Surveillance des fichiers PDF ==="
WScript.Echo "Répertoire surveillé : " & REPERTOIRE_SURVEILLE
WScript.Echo "Intervalle de vérification : " & (INTERVALLE_VERIFICATION / 1000) & " secondes"
WScript.Echo "Appuyez sur Ctrl+C pour arrêter..."
WScript.Echo ""
' Vérifier que le répertoire existe
If Not fso.FolderExists(REPERTOIRE_SURVEILLE) Then
WScript.Echo "ERREUR : Le répertoire '" & REPERTOIRE_SURVEILLE & "' n'existe pas !"
WScript.Quit
End If
' Initialiser la liste des fichiers existants
InitialiserFichiersPrecedents()
' Boucle de surveillance
' Do
VerifierNouveauxFichiers()
' WScript.Sleep INTERVALLE_VERIFICATION
' Loop
End Sub
' Initialise la liste des fichiers PDF déjà présents
Sub InitialiserFichiersPrecedents()
Dim fichier
Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
For Each fichier In dossier.Files
If LCase(fso.GetExtensionName(fichier.Name)) = "pdf" Then
fichiersPrecedents.Add fichier.Name, fichier.DateCreated
End If
Next
WScript.Echo "Initialisation : " & fichiersPrecedents.Count & " fichiers PDF trouvés"
End Sub
' Vérifie s'il y a de nouveaux fichiers PDF
Sub VerifierNouveauxFichiers()
Dim fichier, nomFichier
Set dossier = fso.GetFolder(REPERTOIRE_SURVEILLE)
For Each fichier In dossier.Files
nomFichier = fichier.Name
' Vérifier si c'est un fichier PDF
If LCase(fso.GetExtensionName(nomFichier)) = "pdf" Then
' Vérifier si c'est un nouveau fichier
If Not fichiersPrecedents.Exists(nomFichier) Then
WScript.Echo "Nouveau fichier détecté : " & nomFichier
' Ajouter à la liste des fichiers connus
fichiersPrecedents.Add nomFichier, fichier.DateCreated
' Envoyer l'email
EnvoyerEmail nomFichier, fichier.Path
End If
End If
Next
End Sub
' Envoie un email via Outlook
Sub EnvoyerEmail(nomFichier, cheminComplet)
On Error Resume Next
Dim outlookApp, mailItem
' Créer une instance d'Outlook
Set outlookApp = CreateObject("Outlook.Application")
If Err.Number <> 0 Then
WScript.Echo "ERREUR : Impossible de démarrer Outlook (" & Err.Description & ")"
Err.Clear
Exit Sub
End If
' Créer un nouvel email
Set mailItem = outlookApp.CreateItem(0) ' olMailItem = 0
With mailItem
.To = EMAIL_DESTINATAIRE
If EMAIL_EXPEDITEUR <> "" Then .SentOnBehalfOfName = EMAIL_EXPEDITEUR
.Subject = SUJET_EMAIL & " - " & nomFichier
.Body = "Bonjour," & vbCrLf & vbCrLf & _
"Un nouveau fichier PDF a été détecté dans le répertoire surveillé." & vbCrLf & vbCrLf & _
"Nom du fichier : " & nomFichier & vbCrLf & _
"Chemin complet : " & cheminComplet & vbCrLf & _
"Date de détection : " & Now() & vbCrLf & vbCrLf & _
"Cordialement," & vbCrLf & _
"Système de surveillance automatique"
' Optionnel : Joindre le fichier PDF à l'email
' .Attachments.Add cheminComplet
' Envoyer l'email
.Send
End With
If Err.Number = 0 Then
WScript.Echo "Email envoyé avec succès pour : " & nomFichier
Else
WScript.Echo "ERREUR lors de l'envoi de l'email : " & Err.Description
Err.Clear
End If
' Nettoyer les objets
Set mailItem = Nothing
Set outlookApp = Nothing
End Sub
' Gestion des erreurs globales
Sub GestionErreur(description)
WScript.Echo "ERREUR : " & description
WScript.Echo "Le script continue à fonctionner..."
End Sub
' Démarrer le script
Main()