我想在目录中获取最新的5个文件。
这给了我最新的文件:
FOR /F "delims=|" %%I IN ('DIR "*.yaml" /B /O:D') DO SET NewestFile=%%I
非常感谢您的帮助
答案 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!"
)