Obtenir la date d'un fichier

Résolu
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010 - 5 nov. 2005 à 22:45
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 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.

5 réponses

cs_jeanmarc Messages postés 34 Date d'inscription mardi 18 juin 2002 Statut Membre Dernière intervention 22 novembre 2005
5 nov. 2005 à 22:57
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
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
5 nov. 2005 à 23:18
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
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 nov. 2005 à 23:51
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
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
6 nov. 2005 à 00:43
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++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
6 nov. 2005 à 01:22
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
0
Rejoignez-nous