MS DOS脚本只能DIR前10个文件,降序排列

use*_*788 4 dos batch-file

dir abc*.*/o:-d/b >> "testfile1.txt"用来按降序输出输出.有没有办法只获得5/10个文件作为输出.实际上我想在testfile1.txt中存储最新的5个(按修改日期排序)文件.

感谢您的回复

dbe*_*ham 7

@echo off
setlocal
set /a "n=0, limit=5"
>"testfile1.txt" (
  for /f "eol=: delims=" %%F in ('dir /o-d /b abc*.*') do (
    echo %%F
    2>nul set /a "n+=1, 1/(limit-n)"||goto :break
  )
)
:break
Run Code Online (Sandbox Code Playgroud)

我故意除以0以检测何时达到限制.我可以简单地使用IF语句,但这需要延迟扩展,延迟扩展会破坏包含的文件名!.具有延迟扩展的适当解决方案必须在循环内切换延迟扩展的开启和关闭.