Как найти последние 'n' файлы в каталоге из cmd? - PullRequest
0 голосов
/ 19 июня 2019

Я хочу получить последние 5 файлов в каталоге.

Это дало мне последний файл:

FOR /F "delims=|" %%I IN ('DIR "*.yaml" /B /O:D') DO SET NewestFile=%%I

Любая помощь очень ценится

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Вот еще один способ получить пять (5) новейших файлов в соответствии с «временем последней записи».Обязательно измените каталог -Path на свой.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
FOR /F "delims=" %%f IN ('powershell -NoLogo -NoProfile -Command ^
    "Get-ChildItem -Path "C:\src\t" -Filter '*.yaml' |" ^
        "Sort-Object -Property LastWriteTime -Descending |" ^
        "Select-Object -First 5 |" ^
        "ForEach-Object { $_.FullName }"') DO (
    SET "NEWFILE=%%~f"
    ECHO Do something with "!NEWFILE!"
)
1 голос
/ 19 июня 2019

Следующий пример предназначен для выполнения задачи, изложенной в вашем вопросе и подразумеваемой моим консультативным комментарием:

@Echo Off
SetLocal DisableDelayedExpansion
For /F "Delims==" %%A In ('"Set Newest[ 2>NUL"')Do Set "%%A="
For /F "Tokens=1* Delims=:" %%A In (
    '"Dir /B/A:-D/O:-D/T:W "*.yaml" 2>NUL|FindStr /LINE ".yaml""'
)Do If %%A LEq 5 (Set "Newest[%%A]=%%B")Else GoTo :Next
:Next
Set Newest[ 2>NUL&&Pause

Я использовал самую последнюю написанную в приведенном выше примере и в последней строкебыл включен только для того, чтобы показать вам любые переменные, установленные в цикле For.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...