Obtenir la date d'un fichier [Résolu]

cs_yvesyves 562 Messages postés samedi 10 janvier 2004Date d'inscription 11 octobre 2010 Dernière intervention - 5 nov. 2005 à 22:45 - Dernière réponse : Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention
- 6 nov. 2005 à 01:22
SLt a tous,

J'ai un gros problème, j'aimerais savoir comment on peut obtenir la
date de modification d'un fichier pour ensuite pour pouvoir la comparer
à une autre.

Merci de vos réponses.
Afficher la suite 

5 réponses

Meilleure réponse
cs_jeanmarc 34 Messages postés mardi 18 juin 2002Date d'inscription 22 novembre 2005 Dernière intervention - 5 nov. 2005 à 22:57
3
Merci
Bonsoir,
Exemple avec DateLastModified

Dim Path
Path = "d:\KRNSDE"


MsgBox ShowFolderList(Path),vbmessage,"Fichiers présents dans le répertoire"
Function ShowFolderList(strPath)
Dim fso, Dossiers, fic, fichiers, strListe, f, fdate, fname, dtDiffFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossiers = fso.GetFolder(path)
Set fic = Dossiers.Files


For Each fichiers in fic
Set f = fso.GetFile(fichiers)
fdate = f.DateLastModified
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)
If dtDiffFile <= -5 Then
MsgBox "Le fichier " & Path & fname & " sera supprimé car créé le " & fdate
' fso.DeleteFile(Path & fname)
Else
MsgBox "Le fichier " & Path & fname & " ne sera pas supprimé car créé le " & fdate
End If
strListe = strListe & vbcrlf & vbcrlf & fname & " " & fdate
Next
ShowFolderList = strListe
End Function

Merci cs_jeanmarc 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

jpleroisse 1788 Messages postés mardi 7 novembre 2000Date d'inscription 11 mars 2006 Dernière intervention - 5 nov. 2005 à 23:18
0
Merci
Bonsoir,

Bien que tu ais la réponse à ta question, voici une code qui te donne
les dates de création, de modification et d'accession à un fichier.



Private Sub Command1_Click()

Dim fso As Object, f

Set fso = CreateObject("Scripting.FileSystemObject")

On Error GoTo Fin

Set f = fso.GetFile("C:\MonFichier.txt")

MsgBox "Créé le : " & f.DateCreated

MsgBox " Modifié le : " & f.DateLastModified

MsgBox "Accédé le : " & f.DateLastAccessed

Set f = Nothing

Fin:

Set fso = Nothing

End Sub



jpleroisse
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 5 nov. 2005 à 23:51
0
Merci
j'aime pas fso !

' le plus simple


MsgBox FileDateTime(nom)





Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA"
(ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal
dwSharedMode As Long, ByVal lpSecurityAttributes As Long, ByVal
dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long,
ByVal hTemplateFile As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Declare Function GetFileTime Lib "kernel32" (ByVal hFile As
Long, lpCreationTime As Currency, lpLastAccessTime As Currency,
lpLastWriteTime As Currency) As Long

Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As Currency, lpLocalFileTime As Currency) As Long



Dim dt1 As Currency

Dim dt2 As Currency

Dim dt3 As Currency

Dim dt As Date

Dim hCrea As Long


hCrea = CreateFile(nom, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0, 0)

If hCrea = INVALID_HANDLE_VALUE Then MsgBox "Erreur Lecture: " & nom: Exit Sub

GetFileTime hCrea, dt1, dt2, dt3

CloseHandle (hCrea)



'pour chacune des trois dates:



' en Universel

dt = (dt1 / 1000 - 9435312000#) / 86400

MsgBox dt

' en heure d'hiver

dt = (dt1 / 1000 - 9435308400#) / 86400

MsgBox dt

' en heure d'été

dt = (dt1 / 1000 - 9435304800#) / 86400

MsgBox dt

' en heure Locale

FileTimeToLocalFileTime dt1, Cur

dt = (Cur / 1000 - 9435312000#) / 86400


MsgBox dt







Daniel
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 6 nov. 2005 à 00:43
0
Merci
Bravo, enfin du vrai code.
FSO c'est attacher une remorque derrière une 2cv, vb n'est déjà pas violent, inutile de le ralentir encore en chargeant une machine script par dessus.

Gobillot > tu peux faire idem sans ouvrir avec CreateFile, pourrait rater si un prog a déjà ouvert en exclusif. FindFirstFile et tu fais un CopyMemory sur les 2 champs de WIN32_FIND_DATA.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
Gobillot 3140 Messages postés vendredi 14 mai 2004Date d'inscription 31 mars 2015 Dernière intervention - 6 nov. 2005 à 01:22
0
Merci
pas de problème

CopyMemory pas nécessaire, résultat directement en Currency









Const MAX_PATH = 260

Const FILE_SHARE_READ = &O1

Const FILE_SHARE_WRITE = &O2

Private Const GENERIC_ALL = &H10000000

Private Const GENERIC_READ = &H80000000

Const GENERIC_WRITE = &H40000000

Const OPEN_EXISTING = 3

Const INVALID_HANDLE_VALUE = -1



Private Type WIN32_FIND_DATA

dwFileAttributes As Long

ftCreationTime As Currency

ftLastAccessTime As Currency

ftLastWriteTime As Currency

nFileSizeHigh As Long

nFileSizeLow As Long

dwReserved0 As Long

dwReserved1 As Long

cFileName As String * MAX_PATH

cAlternate As String * 14

End Type


Private Declare Function FindFirstFile Lib "kernel32" Alias
"FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As
WIN32_FIND_DATA) As Long

Private Declare Function FindNextFile Lib "kernel32" Alias
"FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As
WIN32_FIND_DATA) As Long

Private Declare Function FindClose Lib "kernel32" (ByVal hFile As Long) As Long



Dim FindData As WIN32_FIND_DATA

Dim Cur As Currency

Dim nom As String

Dim hfind As Long

Dim dt As Date



nom = "C:\WINDOWS\explorer.exe"



hfind = FindFirstFile(nom, FindData)

If hfind = INVALID_HANDLE_VALUE Then MsgBox "Erreur Lecture: " & nom: Exit Sub

FindClose hfind



FileTimeToLocalFileTime FindData.ftLastWriteTime, Cur

dt = (Cur / 1000 - 9435312000#) / 86400

MsgBox "date de création = " & dt



NB: en fait la transformation en Temps Local n'est pas très heureuse

autant le temps universel ne changera pas, que le temps en Local ne sera

pas le même en été et en hiver.

le fichier n'aura donc pas la même date (date affichée) suivant qu'on est

en été ou en hiver.


Daniel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.