1

На моем жестком диске ежедневно создаются сотни подпапок, которые могут содержать определенный текстовый файл (Tracker.txt).

Я хотел бы создать cmdline или BAT-файл, чтобы получить только один результат - последний файл tracker.txt с полным путем!

Я пробовал dir /s tracker.txt /OD но результат не фильтруется по дате.

Спасибо!

1 ответ1

0

Вы можете передать результаты команды DIR /B /S /OD "tracker.txt" во временный файл журнала, но использовать ее для замены цикла FOR чтобы поставить метку даты каждого файла, которая соответствует имени, за которым следует запятая, а затем полный явный путь и имя файла (т.е. YYYY-MM-DD hh:mm [AM/PM]).

Затем вы используете команду SORT этого файла, чтобы отсортировать все строки в этом файле в новый отсортированный файл, но с самым новым файлом отметки времени внизу списка.

Наконец, вы должны выполнить последний цикл FOR через окончательный список файлов, используя запятую в качестве разделителя, а затем установить только переменную итератора в этом цикле для каждого полного явного пути, и когда он дойдет до конца этого списка, это последний файл, который SET последний, и затем вы можете что-то сделать с этой последней переменной набора, которая является самой новой отметкой даты файла в пределах всех каталогов, которые вы указали рекурсивно.


Пример пакетного скрипта

Обязательно установите значение переменной SET StartDir= в качестве корневой папки, из которой начинается команда DIR для рекурсивного поиска файлов.

@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

Дополнительные ресурсы

  • Сортировать
  • Для /F
  • FOR /? (пакетные замены)

    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
    
  • Задавать

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .