如何在cmd目录中查找最新的“ n”个文件?

时间:2019-06-19 09:37:39

标签: windows batch-file cmd

我想在目录中获取最新的5个文件。

这给了我最新的文件:

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

非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

以下示例旨在执行您的问题中所提出的建议,以及我的咨询意见所暗示的任务:

@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循环中设置的所有变量。

答案 1 :(得分:1)

这里是根据“上次写入时间”获取五(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!"
)