
На моем жестком диске ежедневно создаются сотни подпапок, которые могут содержать определенный текстовый файл (Tracker.txt).
Я хотел бы создать файл cmdline или BAT, чтобы получить только один результат — последний файл tracker.txt с полным путем к нему!
Я попробовал dir /s tracker.txt /OD
, но результат не отфильтрован по дате.
Спасибо!
решение1
Вы можете передать 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
Дополнительные ресурсы
- Сортировать
- Для /Ф
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
- Набор