Cmdline для получения последнего файла по рекурсивной команде dir

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

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

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

спасибо!

25
задан erreka
05.12.2022 17:21 Количество просмотров материала 2915
Распечатать страницу

1 ответ

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

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

наконец, вы запустите финал FOR цикл через окончательный список файлов, используя запятую в качестве разделителя, а затем только установив переменную итератора в этом цикле для каждого полного явного пути, и когда он доберется до нижней части этого списка, это самый новый файл, который SET last, а затем вы можете сделать что-то с этой последней переменной 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

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

  • вроде
  • For / 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
    
  • Set
0
отвечен Pimp Juice IT 2022-12-07 01:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх