遍历子目录时快速获取其最后修改日期的批处理实现方法
快速获取子目录完整路径与最后修改日期的方法
批处理原生高效方案
直接调整dir命令的输出格式,一次遍历就能拿到所有所需信息,完全避免forfiles反复启动进程带来的性能损耗:
@echo off setlocal enabledelayedexpansion set "some_path=C:\Your\Target\Directory" :: 遍历目标目录下的所有子目录,输出最后修改时间与路径 for /f "skip=5 tokens=1,2,3*" %%i in ('dir "!some_path!" /s /a:d /tw /n') do ( :: 跳过dir输出末尾的汇总行 if not "%%l"=="" ( set "dir_fullpath=!some_path!\%%l" :: 验证路径有效性,避免解析错误 if exist "!dir_fullpath!" ( echo 目录: "!dir_fullpath!" 最后修改时间: %%i %%j :: 如需保存到文件,添加 >> dir_modified_log.txt 即可 ) ) ) endlocal
关键参数说明
/s:递归遍历目标目录下的所有层级子目录/a:d:仅筛选目录类型,排除普通文件/tw:指定显示最后写入(修改)时间,可按需替换:/tc:显示目录创建时间/ta:显示目录最后访问时间
/n:采用长文件名格式输出,完美兼容带空格的路径skip=5:跳过dir命令输出的前5行标题与分隔线内容tokens=1,2,3*:拆分输出内容,分别提取日期、时间、完整目录名(*用于捕获带空格的路径剩余部分)
PowerShell方案(简洁高效)
若环境允许使用PowerShell,代码逻辑更直观,执行效率也更高:
$targetPath = "C:\Your\Target\Directory" # 遍历子目录并输出完整路径与最后修改时间 Get-ChildItem -Path $targetPath -Directory -Recurse | Select-Object FullName, LastWriteTime # 如需保存到文件,追加 | Out-File -FilePath "dir_modified_dates.txt" -Encoding UTF8
说明
-Directory:仅筛选目录项-Recurse:递归遍历所有子目录LastWriteTime直接对应目录的最后修改时间,无需手动解析字符串,准确率更高
内容的提问来源于stack exchange,提问作者crosenblum
相关产品推荐
相关产品推荐

