batch - arquiva o tempo da última modificação com segundos

5

Eu quero saber quando um arquivo foi modificado pela última vez.

Eu posso obter essas informações usando o seguinte script em lote:

FOR %%i IN (myfile) DO SET modif_time=%%~ti

O problema é que preciso da segunda da última modificação e o comando %~t retorna a data e a hora com apenas horas e minutos.

Só posso verificar os segundos visualizando manualmente o arquivo "janela de propriedades" por arquivo.

Como posso obter tempo com segundos em lote?

    
por user3133076 10.01.2014 / 12:57

2 respostas

6

Windows Vista / 7 e posterior

Windows Server 2003 e posterior

Com um pouco de esforço, você pode usar forfiles para obter o horário da última modificação de um arquivo específico, segundos incluídos:

REM "delims=" is required to avoid stripping AM/PM
for /f "delims=" %%i in ('"forfiles /m filename /c "cmd /c echo @ftime" "') do set modif_time=%%i
echo %modif_time%

Exemplo de saída

7:33:54 AM

O valor exibido é baseado na hora local do computador e corresponde à hora mostrada na caixa de diálogo de propriedades do arquivo.

Ajuda de uso

link

Windows XP

forfiles.exe não está disponível imediatamente, mas você pode obter manualmente o executável necessário . É uma versão antiga que faz parte do Windows 2000 Resource Kit. A sintaxe diferencia maiúsculas de minúsculas e é ligeiramente diferente, assim como a saída:

for /f %%i in ('"forfiles.exe -mfilename -c"cmd /c echo @FTIME" "') do set modif_time=%%i
echo %modif_time%

Exemplo de saída

153354

Aqui, o valor do tempo é exibido no formato UTC e não é afetado por alterações no fuso horário ou no horário de verão. Neste exemplo, o arquivo foi modificado pela última vez às 15:33:54 (UTC).

Observação Você pode obter a versão mais recente do forfiles.exe pegando uma cópia do arquivo de qualquer mídia de instalação ou configuração do Windows 2003 Server.

    
por 14.01.2014 / 17:48
0

Use um interpretador de comandos que seja capaz disso.

Veja como fazer isso com o TCC / LE da JP Software, com algumas variações do tema lançadas em boa medida:

[C:\Users\JdeBP]touch /c myfile
10/01/2014 18:31:32.710  C:\Users\JdeBP\myfile

[C:\Users\JdeBP]echo myfile was created at %@filetime[myfile,c,s]
myfile was created at 18:31:32

[C:\Users\JdeBP]echo myfile was last accessed at %@filetime[myfile,a,s]
myfile was last accessed at 18:31:32

[C:\Users\JdeBP]for i in (myfile) do set modif_time=%@filetime[%i,w,s]

[C:\Users\JdeBP]echo myfile was last modified at %modif_time%
myfile was last modified at 18:31:32

Leitura adicional

  • Software JP. @FILETIME . Take Command / TCC Help.
  • Software JP. TOQUE . Take Command / TCC Help.
por 10.01.2014 / 19:57