You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows 10批处理中删除目标文件夹文件并保留最新50个?

Windows 10 批处理:保留指定文件夹内最新50个文件并删除其余

Forfiles 命令更适合基于时间戳的筛选,无法直接实现“保留最新N个文件”的需求,改用 dir 配合 for 循环可以实现该功能,以下是两种场景的批处理代码:

仅处理目标文件夹下的文件(不包含子文件夹)

@echo off
setlocal enabledelayedexpansion

:: 替换为你的目标文件夹路径
set "targetDir=C:\Images\"

:: 按修改时间倒序列出文件,跳过前50个最新文件,删除剩余文件
for /f "skip=50 delims=" %%f in ('dir /b /o-d /a-d "%targetDir%"') do (
    del /f /q "%targetDir%%%f"
)

endlocal

代码说明:

  • dir /b /o-d /a-d "%targetDir%":仅列出目标文件夹下的文件(排除文件夹),并按修改时间倒序排列(最新文件排在最前)
  • skip=50:跳过列表中的前50个文件(保留最新的50个)
  • del /f /q:强制删除文件,且不弹出确认提示

处理目标文件夹及所有子文件夹的文件

如果需要递归处理子文件夹中的文件,可使用以下代码:

@echo off
setlocal enabledelayedexpansion

:: 替换为你的目标文件夹路径
set "targetDir=C:\Images\"
set "tempFile=%temp%\filelist.tmp"

:: 递归收集所有文件路径到临时文件
for /r "%targetDir%" %%f in (*) do (
    echo %%f >> "%tempFile%"
)

:: 按修改时间倒序排序临时文件,跳过前50个最新文件,删除剩余文件
for /f "skip=50 delims=" %%f in ('sort /r "%tempFile%"') do (
    del /f /q "%%f"
)

:: 删除临时文件
del /f /q "%tempFile%"

endlocal

代码说明:

  • for /r:递归遍历目标文件夹下的所有子文件夹
  • sort /r:对临时文件中的文件路径按修改时间倒序排序(Windows 的 sort 命令默认按文件的最后修改时间排序)
  • 最后自动清理临时文件,避免残留

内容的提问来源于stack exchange,提问作者S.Zs.94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:56:03