web-dev-qa-db-fra.com

Obtenir le temps de création du fichier en millisecondes

Existe-t-il un moyen d'obtenir plus de précision lors de la création d'un fichier dans Windows? Je veux obtenir le temps de création d'une vidéo MP4 en millisecondes. Est-ce possible?

13
Phil

Résolution d'horodatage

L'horodatage de création d'un fichier dans Windows dépend du système de fichiers:

  • FAT/VFAT a une résolution maximale de 2s

  • NTFS a une résolution maximale de 100 ns


solution wmic

Vous pouvez utiliser wmic pour récupérer la date de création du fichier à la microseconde la plus proche.

Exemple:

F:\test>wmic datafile where name="f:\\test\\test.txt" get creationdate | findstr /brc:[0-9]
20150329221650.080654+060

Creationdate 20150329221650.080654+060 est un horodatage au format suivant:

yyyymmddHHMMSS.xxxxxxsUUU

où:

  • yyyy Année à quatre chiffres (0000 à 9999).

  • mm Mois à deux chiffres (01 à 12).

  • dd Jour du mois à deux chiffres (01 à 31).

  • HH Heure du jour à deux chiffres en utilisant l'horloge de 24 heures (00 à 23).

  • MM Minutes à deux chiffres dans l'heure (00 à 59).

  • SS Nombre de secondes à deux chiffres dans la minute (00 à 59).

  • xxxxxx Nombre de microsecondes à six chiffres dans la seconde (000000 à 999999)

  • s Signe plus (+) ou moins (-) pour indiquer un décalage positif ou négatif par rapport au temps universel coordonné (UTC).

  • UUU Décalage à trois chiffres indiquant le nombre de minutes pendant lesquelles le fuseau horaire d'origine s'écarte de l'UTC.


solution de statistique

Vous pouvez également utiliser stat (à partir d’une installation de cygwin ou mingw ).

Exemple:

DavidPostill@Hal /f/test
$ stat test.txt | grep Birth
 Birth: 2015-03-29 22:16:50.080654200 +0100

sortie dir pour comparaison

F:\test>dir /t:c test.txt
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

29/03/2015  22:16                32 test.txt
               1 File(s)             32 bytes
               0 Dir(s)  1,798,546,849,792 bytes free

Lectures complémentaires

22
DavidPostill

J'ai trouvé un moyen d'obtenir ceci dans Matlab:

Vous pouvez utiliser la fonction GetFileTime écrite par Jan Simon. Si vous ne voulez pas compiler vos propres fichiers mex, vous pouvez également télécharger les fichiers compilés ici .

Ce n'est pas aussi précis que d'utiliser wmic (seulement ms) mais cela convient à mon propos.

1
Phil

Une manière intelligente est démontrée ici: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

Il utilise VBScript pour interroger la base de données CIM de WMI et renvoyer la structure FILETIME associée à un fichier.

Il existe également des outils open source permettant d'inspecter les métadonnées d'un fichier multimédia, telles que EXIFtool , conçu pour la gestion des métadonnées de médias créés par des appareils photo numériques.

1
Stavr00