Obtenha o tempo de criação do arquivo em milissegundos

12

Existe uma maneira de obter o tempo de criação de um arquivo no Windows com maior precisão? Eu quero obter o tempo de criação de um vídeo mp4 em milissegundos. Isso é possível?

    
por Phil 07.07.2015 / 16:09

4 respostas

21

Resolução de timestamp

O timestamp de criação de um arquivo no Windows depende do sistema de arquivos:

  • O FAT / VFAT tem uma resolução máxima de 2s

  • O NTFS tem uma resolução máxima de 100 ns

solução wmic

Você pode usar wmic para recuperar a data de criação do arquivo até o microssegundo mais próximo.

Exemplo:

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

A data de criação 20150329221650.080654+060 é uma data e hora, com o seguinte formato:

yyyymmddHHMMSS.mmmmmmsUUU

onde:

  • yyyy Ano com quatro dígitos (0000 a 9999).

  • mm Mês de dois dígitos (01 a 12).

  • dd Dia de dois dígitos do mês (de 01 a 31).

  • HH Hora de dois dígitos do dia usando o relógio de 24 horas (de 00 a 23).

  • MM Minuto de dois dígitos na hora (de 00 a 59).

  • SS Número de segundos com dois dígitos no minuto (00 a 59).

  • xxxxxx Número de seis dígitos de microssegundos no segundo (000000 a 999999)

  • s sinal de mais ( + ) ou sinal de menos ( - ) para indicar um deslocamento positivo ou negativo do UTC (Coordinated Universal Times).

  • UUU Offset de três dígitos indicando o número de minutos que o fuso horário de origem se desvia do UTC.

solução stat

Você também pode usar stat (de um cygwin ou mingw instalação).

Exemplo:

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

saída dir para comparação

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

Leitura Adicional

por 07.07.2015 / 16:53
1

Uma forma inteligente é demonstrada aqui: link

Ele está usando o VBScript para consultar o banco de dados CIM do WMI e retornar a estrutura FILETIME associada a um arquivo.

Existem também ferramentas de software livre que podem inspecionar os metadados de um arquivo de mídia, como EXIFtool que é voltado para gerenciar os metadados de mídia criados por câmeras digitais.

    
por 07.07.2015 / 16:49
1

Encontrei uma maneira de obter isso no Matlab:

Você pode usar a função GetFileTime escrita por Jan Simon. Se você não quiser compilar seus próprios arquivos mex, você também pode baixar os arquivos compilados aqui .

Não é tão exato quanto usar wmic (somente ms), mas para o meu propósito é adequado.

    
por 08.07.2015 / 10:30
-3

depende do sistema de arquivos : o FAT tem 2 segundos de resolução, NTFS teoricamente tem Resolução de 100 ns, mas a resolução real é de 10 ms . Dito isso, as interrupções têm prioridade mais alta que a E / S de disco, e não estou certo de que o efeito de cache de gravação tenha o registro de data e hora. Os timers de multimídia são otimizados para precisão. seria a maneira preferida de implementar o timing.

Você pode usar uma ferramenta existente, como o XYplorer , para visualizar carimbos de data e hora de alta resolução ou ,vocêpodepreferirescreverseupróprioaplicativo.Useo Método File.GetCreationTime ; ele retorna uma propriedade Estrutura de data e hora com milissegundo . / p>     

por 07.07.2015 / 17:13