Ottieni il tempo di creazione del file in millisecondi

C'è un modo per get il tempo di creazione di un file nelle windows in una precisione più alta? Voglio avere il tempo di creazione di un video MP4 in millisecondi. È ansible?

Risoluzione timestamp

Il timestamp di creazione di un file in Windows dipende dal file system:

  • FAT / VFAT ha una risoluzione massima di 2s

  • NTFS ha una risoluzione massima di 100 ns


soluzione wmic

È ansible utilizzare wmic per recuperare la data di creazione dei file con la massima precisione consentita dal file system.

Esempio:

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

La data di creazione 20150329221650.080654+060 è un timestamp, con il seguente formato:

 yyyymmddHHMMSS.mmmmmmsUUU 

where:

  • yyyy Anno a quattro cifre (da 0000 a 9999).

  • mm Mese a due cifre (da 01 a 12).

  • dd Giornata a due cifre del mese (da 01 a 31).

  • HH Ora a due cifre del giorno usando l'orologio 24 ore (da 00 a 23).

  • MM Minuto a due cifre nell'ora (da 00 a 59).

  • SS Numero di secondi a due cifre nel minuto (da 00 a 59).

  • xxxxxx Numero di microsecondi a sei cifre nel secondo (da 000000 a 999999)

  • s segno Plus ( + ) o segno less ( - ) per indicare un offset positivo o negativo dal Time Universal Coordinated (UTC).

  • UUU Offset a tre cifre che indica il numero di minuti che il fuso orario di origine devia da UTC.


soluzione stat

È anche ansible utilizzare stat (da un'installazione cygwin o mingw ).

Esempio:

 [email protected] /f/test $ stat test.txt | grep Birth Birth: 2015-03-29 22:16:50.080654200 +0100 

output dir per confronto

 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 

Ulteriori letture

  • wmic
  • Lavorare con le date ei tempi utilizzando WMI
  • Un indice AZ della row di command CMD di Windows è un ottimo riferimento per tutte le cose relative a cmd di Windows.

Qui è dimostrato un modo intelligente: https://stackoverflow.com/questions/5180592/showing-ntfs-timestamp-with-100-nsec-granularity

Utilizza VBScript per interrogare il database CIM di WMI e restituisce la struttura FILETIME associata a un file.

Ci sono anche strumenti open source che possono controllare i metadati di un file multimediale, ad esempio EXIFtool, che è orientato alla gestione dei metadati dei supporti creati dalle fotocamere digitali.

Ho trovato un modo per get questo in Matlab:

È ansible utilizzare la function GetFileTime scritta da Jan Simon. Se non si desidera compilare i propri file di mex, è anche ansible scaricare i file compilati qui .

Non è esattamente come utilizzare wmic (solo ms) ma per il mio scopo è adatto.

Dipende dal file system : FAT ha una risoluzione di 2 secondi, NTFS teoricamente ha una risoluzione di 100 ns, ma la risoluzione effettiva è di 10 ms . Detto questo, gli interrupt hanno una priorità maggiore rispetto al disco I / O e non sono sicuro che l'effetto di scrittura-cache abbia il timbro temporale. I timer multimediali sono ottimizzati per la precisione, quindi sarebbe il modo preferito per implementare la tempistica.

È ansible utilizzare uno strumento esistente come XYplorer per visualizzare i timestamps ad alta risoluzione o XYplorer che mostra ms , si può preferire scrivere la propria applicazione. Utilizzare il metodo File.GetCreationTime ; restituisce una struttura DateTime con properties; Millisecond .