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

如何在CMD中实现子到父目录遍历,优先列出最深子目录再输出父目录

CMD下实现目录从子到父反向输出的解决方案

你之前使用的dir /A:D/S/B/O:-D中O:-D参数是按目录修改时间降序排序,和目录层级无关,因此无法实现按子到父的层级倒序输出。

方案1:借助PowerShell(推荐)

当前Windows系统默认预装PowerShell,你可以直接在CMD窗口内执行以下命令,无需切换环境:

powershell "Get-ChildItem -Directory -Recurse 'D:\Income' | Select-Object -ExpandProperty FullName | Sort-Object -Property Length -Descending"

命令逻辑:

  • 递归读取指定路径下的所有目录
  • 提取目录的完整路径
  • 按路径字符串长度从长到短排序,天然匹配子目录路径更长、父目录路径更短的规律,完全符合你需要的输出顺序。

如果需要将结果保存到本地文件,可直接追加输出重定向:

powershell "Get-ChildItem -Directory -Recurse 'D:\Income' | Select-Object -ExpandProperty FullName | Sort-Object -Property Length -Descending" > D:\目录列表.txt

方案2:纯CMD批处理实现

如果需要完全不依赖PowerShell,可使用以下批处理脚本:

@echo off
:: 替换为你需要遍历的根目录
set "root_dir=D:\Income"
:: 将所有目录路径写入临时文件
dir /A:D /S /B "%root_dir%" > tmp_dir_list.tmp
:: 统计临时文件的总行数
for /f %%a in ('find /c /v "" ^< tmp_dir_list.tmp') do set line_cnt=%%a
:: 从最后一行倒序读取输出
for /l %%i in (%line_cnt%, -1, 1) do (
    for /f "tokens=1* delims=:" %%p in ('findstr /n "^" tmp_dir_list.tmp ^| findstr "^%%i:"') do echo %%q
)
:: 清理临时文件
del tmp_dir_list.tmp
pause

将上述代码保存为.bat后缀的文件,双击运行即可得到目标顺序的目录列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:06:03