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

如何合并dir与forfiles按修改日期输出子目录到TXT文件

可行实现方案

两个命令的能力完全可以整合,不需要额外安装工具,基于Windows内置命令行就能实现「遍历目录、按最后修改日期筛选、仅输出符合条件的子文件夹路径到TXT」的需求,具体有两种可直接落地的写法:

方案1:纯CMD命令行实现(兼容所有Windows版本)

这个写法同时复用了原dir命令的递归遍历、导出TXT逻辑,以及forfiles的日期筛选能力,额外加了仅保留文件夹的过滤逻辑,避免把普通文件混入输出:

  1. 先把命令行的工作路径切换到你要遍历的目标根目录(比如示例里的Downloads目录)
  2. 执行下面的命令:
forfiles /S /D +04/12/2021 /C "cmd /c if @isdir==TRUE echo @path" > 符合条件的文件夹列表.txt

各参数对应逻辑:

  • /S:递归遍历所有嵌套层级的子目录,和原dir /s的作用完全一致
  • /D +04/12/2021:筛选最后修改时间在2021年4月12日及之后的条目,和提到的forfiles日期规则一致;如果要筛选该日期之前修改的条目,把+换成-即可
  • /C "cmd /c if @isdir==TRUE echo @path":逐条目做判断,只保留类型为文件夹的内容,输出时只打印文件夹的完整路径,无多余信息
  • 末尾的> 符合条件的文件夹列表.txt:把所有输出重定向到当前目录下的TXT文件,和原dir > yourfile.txt的导出逻辑完全一致

方案2:PowerShell实现(不受系统日期格式影响,无乱码问题)

如果使用forfiles时出现日期识别错误、中文路径导出乱码的问题,可以用Windows自带的PowerShell实现,对区域设置的兼容性更好:

Get-ChildItem -Path "C:\Users\你的用户名\Downloads" -Directory -Recurse | Where-Object { $_.LastWriteTime -ge (Get-Date "2021-04-12") } | Select-Object -ExpandProperty FullName | Out-File "符合条件的文件夹列表.txt" -Encoding utf8

各参数对应逻辑:

  • -Directory:枚举阶段直接过滤掉所有普通文件,只保留文件夹类型
  • -Recurse:递归遍历所有层级的子文件夹
  • Where-Object:精准筛选最后修改时间大于等于2021年4月12日的文件夹,日期格式可固定为ISO格式,不会受系统短日期格式干扰
  • Select-Object -ExpandProperty FullName:输出纯文件夹完整路径,不带多余的属性信息
  • Out-File:导出到指定TXT文件,可强制指定UTF8编码,避免中文路径乱码

常见注意事项

  • 使用forfiles时,日期格式必须和当前系统的短日期显示规则匹配,比如中文Windows默认短日期为YYYY/MM/DD时,就把参数里的日期写成/D +2021/04/12,硬套英文格式的MM/DD/YYYY会出现筛选结果不符合预期的问题
  • 上述两种方案的输出效果和dir /b的裸路径输出完全一致,不会出现原dir命令默认带的卷标统计、表头、文件大小这类冗余信息
  • 如果需要保留原dir /s /b /o:gn命令“文件夹优先、按名称排序”的效果,只需要把PowerShell里的查询结果,在管道最后加个Sort-Object FullName的排序参数即可

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 13:54:08