Cmdline para obter o arquivo mais recente no comando dir recursivo

1

No meu disco rígido, eu tenho centenas de subpastas criadas diariamente que podem conter um arquivo de texto específico (Tracker.txt).

Eu gostaria de criar um arquivo cmdline ou BAT para obter apenas um resultado, o arquivo tracker.txt mais recente, com seu caminho completo!

Eu tentei dir /s tracker.txt /OD , mas o resultado não é filtrado por data.

Obrigado!

    
por Izarra6492 25.05.2017 / 14:14

1 resposta

0

Você pode canalizar os resultados do comando DIR /B /S /OD "tracker.txt" para um arquivo de log temporário, mas usar as substituições do loop FOR para colocar o carimbo de data e hora de cada arquivo que corresponda ao nome seguido por uma vírgula e o caminho explícito completo e nome do arquivo (ou seja, YYYY-MM-DD hh:mm [AM/PM] ).

Em seguida, você usa o comando SORT nesse arquivo para classificar todas as linhas desse arquivo em um novo arquivo classificado, mas com o arquivo de registro de data e hora mais novo na parte inferior da lista.

Por último, você executaria um loop FOR final na lista de arquivos final usando a vírgula como delimitador e, em seguida, definindo apenas a variável iteradora nesse loop para cada caminho explícito completo e quando chegar ao final dessa list, este é o arquivo mais recente que é SET last e, em seguida, você pode fazer algo com essa última variável set, que é o selo de data mais recente do arquivo, dentro de todos os diretórios especificados recursivamente.

Exemplo de script em lote

Certifique-se de definir o valor da variável SET StartDir= para ser a pasta raiz onde o comando DIR inicia para localizar os arquivos recursivamente.

@ECHO ON

SET StartDir=C:\Users\User\Desktop\Test

IF EXIST "%temp%\~dir1temp.dat" DEL /Q /F "%temp%\~dir1temp.dat"
FOR /F "TOKENS=*" %%A IN ('Dir /B /S /OD "%StartDir%\tracker.txt"') DO ECHO %%~TA, %%~FPNXA>>"%temp%\~dir1temp.dat"

IF EXIST "%temp%\~dirsorttemp.dat" DEL /Q /F "%temp%\~dirsorttemp.dat"
SORT "%temp%\~dir1temp.dat">>"%temp%\~dirsorttemp.dat"

FOR /F "TOKENS=2 DELIMS=," %%A IN (%temp%\~dirsorttemp.dat) DO (SET File=%%~A)

ECHO %File%
:::<command to do something with %file%>
PAUSE

Mais recursos

  • Classificar
  • Para / F
  • FOR /? (substituições em lote)

    In addition, substitution of FOR variable references has been enhanced.
    You can now use the following optional syntax:
    
    %~fI        - expands %I to a fully qualified path name
    %~tI        - expands %I to date/time of file
    
  • Defina
por 25.05.2017 / 15:08