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?
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
È 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.
È 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
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
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 , si può preferire scrivere la propria applicazione. Utilizzare il metodo File.GetCreationTime ; restituisce una struttura DateTime con properties; Millisecond .