cmd单行for循环可批量导出多个文件夹的tree结构,powershell更适配含空格、中文或网络路径的场景,且支持utf-8编码与路径合法性处理;tree命令可通过/l限制层级、/a强制ascii输出。

你需要在Windows系统命令行中一次性导出多个文件夹的完整目录树结构,避免逐个打开CMD、切换路径、重复输入命令,但手动循环操作效率极低且易漏项。
用CMD批量导出多个文件夹的目录树
适用于目标文件夹数量不多(≤5个)、路径已知且不含空格或特殊字符的场景。核心是把tree命令封装进单行for循环,跳过逐个cd的繁琐步骤。
第一步:按 Win + R 输入 cmd 回车,打开命令提示符。
第二步:直接执行以下命令(将其中的三个路径替换成你的真实路径):
for %i in ("D:ProjectA" "E:Docs‚4" "C:TempBackup") do @pushd "%i" && tree /f > "%i_tree.txt" && popd
这行命令会依次进入每个路径,生成名为_tree.txt的文件并保存在对应文件夹内。注意:路径必须用英文双引号包裹,否则含空格时会报错“系统找不到指定路径”。
第三步:检查每个目标文件夹下是否生成了 _tree.txt 文件——它就是该文件夹的完整目录树。
用PowerShell脚本自动处理带空格/中文路径的多文件夹
当你要导出的文件夹路径含中文、空格、括号或位于网络驱动器时,CMD的for循环极易崩溃,必须改用PowerShell——它原生支持Unicode和长路径,且语法更健壮。
方法一:一行命令快速执行(推荐)
右键开始菜单 → 选择“Windows Terminal(管理员)”,粘贴运行:
$paths = "D:我的项目", "F:资料备份Q3汇总", "\servershareDesign"; $paths | ForEach-Object { Set-Location $_; Get-ChildItem -Recurse -File | ForEach-Object {$_.FullName} | Out-File "$($_.Split(':')[0]):$(Split-Path $_ -Leaf)_files.txt" -Encoding UTF8 }
该命令会为每个路径生成一个以文件夹名命名的_files.txt,内容是全部文件的绝对路径,UTF-8编码确保中文不乱码。
方法二:创建可复用的BAT+PS混合脚本
新建文本文件,重命名为 batch_tree_export.bat,用记事本打开,粘贴以下内容:
@echo off<br>PowerShell -ExecutionPolicy Bypass -Command "$folders=@('D:App','C:Users张三Desktop素材');$folders|%%{Set-Location $_;tree /f /a > "$($_.Replace(':', '_').Replace('', '_'))_tree.txt"}"
双击运行此BAT文件,将在当前目录生成类似 D__App_tree.txt 和 C__Users__张三__Desktop__素材_tree.txt 的文件——路径中的冒号和反斜杠被替换为下划线,避免Windows文件名非法字符报错。
用tree命令精准控制输出层级与格式
有时你不需要全部子目录,只想导出前两层结构用于汇报;或需要纯ASCII字符确保在老旧终端里也能正常显示。
① 限制深度:进入目标文件夹后,执行 tree /f /L 2 > depth2_tree.txt。/L 2 表示只展开两级子目录,避免node_modules等冗余内容撑爆文件。
② 强制ASCII绘图:加 /A 参数,如 tree /f /A > ascii_tree.txt。不加时tree默认用扩展字符(├─└─│),某些终端或邮件客户端会显示为方块乱码。
③ 避免生成空文件:若目标文件夹为空,tree命令仍会输出“文件夹 PATH 列表”头信息。如需严格过滤空结果,必须配合PowerShell的 Get-ChildItem 判断后再执行tree——CMD本身无此能力。











