Você pode canalizar os DIR /B /S /OD "tracker.txt"resultados do comando para um arquivo de log temporário, mas usar as FORsubstituições de loop para colocar o registro de data e hora de cada arquivo que corresponda ao nome seguido por uma vírgula e, em seguida, o caminho explícito completo e o nome do arquivo (ou seja YYYY-MM-DD hh:mm [AM/PM]).
Em seguida, você usa o SORTcomando nesse arquivo para classificar todas as linhas desse arquivo em um novo arquivo classificado, mas com o arquivo de carimbo de data / hora mais recente na parte inferior da lista.
Por fim, você executaria um FORloop final na lista de arquivos final usando a vírgula como delimitador e, em seguida, apenas configurando a variável iteradora nesse loop para cada caminho explícito completo e, quando chegar ao final da lista, esse é o mais novo arquivo que é o SETúltimo e, em seguida, você pode fazer algo com essa última variável definida, que é o mais recente carimbo de data do arquivo em todos os diretórios especificados recursivamente.
Exemplo de script em lote
Certifique-se de definir o valor da SET StartDir=variável como a pasta raiz onde o comando DIR é iniciado 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
Recursos adicionais
- Ordenar
- For / F
FOR /? (substituições de 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
- Conjunto