Bonjour,
J'ai développé un script VBS qui va boucler un certain nombre de fois pour vérifier qu'un fichier bien spécifique est mis à jour régulièrement. (pour faire simple, ce script surveille le log d'un autre script pour vérifier qu'il est bien en cours d'exécution)
A chaque itération, le script va comparer la date de modification du fichier scruté à celle de l'itération précédente. Si les 2 dates sont identique, ça envoie une alerte, sinon ça va attendre un certain nombre de minutes avant de passer à l'itération suivante.
Pour récupérer la date de modification de mon fichier, j'utilise :
Or, il arrive très régulièrement que la date récupérée par cette méthode ne soit pas la bonne, un peu comme s'il y avait un cache des propriétés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 set oFile = oFSO.GetFile(p_filename) last_date = CDate(oFile.DateLastModified) set oFile = Nothing
A 5 minutes d'intervalle, il va me dire que c'est la même date de modification, alors que le fichier aura été pourtant bien été modifié plusieurs fois (la date affichée dans l'explorateur de fichier, elle, est bonne après un "F5").
J'ai voulu feinter en utilisant "Shell.Application" :
mais j'ai exactement le même problème.
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 set oFile = oFSO.GetFile(p_filename) tmp_foldername = oFSO.GetParentFolderName(oFile) tmp_filename = oFSO.GetFileName(oFile) Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.NameSpace(tmp_foldername) Set objFolderItem = objFolder.ParseName(tmp_filename) last_date = objFolder.GetDetailsOf(objFolderItem, 3) Set objFolder = Nothing Set objFolderItem = Nothing Set objShell = Nothing Set oFile = Nothing
Existe-t-il un moyen de faire en sorte de ne pas utiliser la valeur "dans le cache" mais de vraiment aller récupérer la date de modification du fichier ?
Merci d'avance.
Partager