Найти последний измененный файл во всех подпапках
Мне нужен пакетный код Windows, чтобы найти последний измененный файл среди всех файлов во всех подпапках определенной папки.
Это не так просто, как кажется.
Некоторые файлы могли быть изменены в одну и ту же минуту, но в разные секунды. Мне нужен только последний.
1 ответ
Решение
@echo on
setlocal enableextensions disabledelayedexpansion
set "root=c:\somewhere"
for %%r in ("%root%\.") do for /f "tokens=3,*" %%a in ('
robocopy "%%~fr." "%%~fr." /l /nocopy /s /is /njh /njs /ndl /nc /ns /ts
^| sort /r
^| findstr /n "^"
^| findstr /l /b /c:"1:"
') do echo %%b
Этот код использует robocopy
(встроенный для Vista и более поздних версий ОС, загружаемый из Microsoft для XP или 2003) для получения списка файлов с отметкой времени в yyyy-mm-dd hh:nn:ss
формат, который сортируется в порядке убывания, а затем извлекается только первая строка (то есть более новый файл).