Wndows bat将一个目录下所有子文件夹的路径导出到txt文本

1. 如何使用windows bat将一个目录下所有子文件夹的路径导出到txt文本?要求递归到最里层文件夹。

要在 Windows 的批处理脚本BAT 中递归地列出所有子文件夹并将结果保存到文本文件中,可以使用以下脚本:

batch 复制代码
@echo off
setlocal enabledelayedexpansion

set "sourceDir=C:\YourSourceDirectory"
set "outputFile=C:\output.txt"

if exist "%outputFile%" del "%outputFile%"

for /r "%sourceDir%" /d %%i in (*) do (
    echo %%i >> "%outputFile%"
)

echo 所有子文件夹路径已保存到 %outputFile%

这个脚本的工作原理如下:

  1. @echo off 关闭命令回显。

  2. setlocal enabledelayedexpansion 启用延迟变量扩展。

  3. 设置源目录 (sourceDir) 和输出文件 (outputFile) 的路径。请将 C:\YourSourceDirectory 替换为你想要列出子文件夹的实际目录路径。

  4. 如果输出文件已存在,则删除它以避免追加到旧文件。

  5. for /r "%sourceDir%" /d %%i in (*) 进行递归循环:

    • /r 表示递归搜索
    • /d 表示只处理目录
    • %%i 是循环变量,代表每个找到的目录路径
  6. echo %%i >> "%outputFile%" 将每个目录路径追加到输出文件中。

  7. 最后,显示一条消息表示操作完成。

使用方法:

  1. 将上述代码保存为 .bat 文件,例如 list_folders.bat。
  2. 编辑脚本,将 C:\YourSourceDirectory 更改为你想要列出子文件夹的目录路径。
  3. 双击运行该 BAT 文件。

这个脚本会递归地遍历指定目录下的所有子文件夹,并将它们的完整路径保存到指定的文本文件中。每个文件夹路径将占用一行。

注意:如果目录结构非常深或包含大量文件夹,处理可能需要一些时间。

2. Windows bat只导出最深层的文件夹到txt

batch 复制代码
@echo off
setlocal enabledelayedexpansion

set "sourceDir=C:\YourSourceDirectory"
set "outputFile=C:\output.txt"

if exist "%outputFile%" del "%outputFile%"

for /r "%sourceDir%" /d %%i in (*) do (
    set "isDeepest=1"
    for /f "delims=" %%j in ('dir /b /ad "%%i" 2^>nul') do set "isDeepest=0"
    if !isDeepest! equ 1 (
        echo %%i>> "%outputFile%"
    )
)

if not exist "%outputFile%" (
    echo 没有找到最深层文件夹,或源目录为空。
) else (
    echo 最深层文件夹路径已保存到 %outputFile%
)

这个修正后的脚本有以下改进:

  1. 使用 dir /b /ad 命令来检查子文件夹,这比之前的方法更可靠。

  2. 使用 set "isDeepest=1" 和 set "isDeepest=0" 来标记是否为最深层文件夹,避免了可能的字符串比较问题。

  3. 添加了错误检查,如果 output.txt 文件没有创建(可能是因为没有找到最深层文件夹或源目录为空),会显示相应的消息。

使用方法:

  1. 将此代码保存为 .bat 文件,例如 list_deepest_folders.bat。
  2. 编辑脚本,将 C:\YourSourceDirectory 更改为你想要列出最深层子文件夹的目录路径。
  3. 双击运行该 BAT 文件。

这个修正后的脚本应该能够正确地识别最深层文件夹并创建 output.txt 文件。如果执行后仍然没有产生 output.txt,请检查以下几点:

  • 确保你有权限在指定位置创建文件。
  • 检查源目录路径是否正确。
  • 确保源目录中确实存在子文件夹。

2.1 只导出文件夹名,而不是完整路径

batch 复制代码
@echo off
setlocal enabledelayedexpansion

set "sourceDir=C:\YourSourceDirectory"
set "outputFile=C:\output.txt"

if exist "%outputFile%" del "%outputFile%"

for /r "%sourceDir%" /d %%i in (*) do (
    set "isDeepest=1"
    for /f "delims=" %%j in ('dir /b /ad "%%i" 2^>nul') do set "isDeepest=0"
    if !isDeepest! equ 1 (
        for %%f in ("%%i") do echo %%~nxf>> "%outputFile%"
    )
)

if not exist "%outputFile%" (
    echo 没有找到最深层文件夹,或源目录为空。
) else (
    echo 最深层文件夹名已保存到 %outputFile%
)

主要的变化是在输出行中。我们将:

batch 复制代码
echo %%i>> "%outputFile%"

改为:

batch 复制代码
for %%f in ("%%i") do echo %%~nxf>> "%outputFile%"

这里的 %%~nxf 会只输出文件夹的名称,而不是完整路径。%%~nx 是一个特殊的参数扩展,其中:

  • n 表示只取文件名(不包括路径)
  • x 表示取文件扩展名

合起来,%%~nxf 就会给出文件夹的名称。

这个修改后的脚本会遍历所有最深层的文件夹,并只将它们的名称(不包括路径)写入到输出文件中。

相关推荐
百事牛科技1 小时前
7Z分卷文件怎么打开?7-Zip解压方法详解
windows·7-zip
2301_789380495 小时前
【踩坑记录】Windows资源管理器无限重启,改注册表、看日志
windows·经验分享·笔记
sukalot6 小时前
Windows 驱动实例分析系列:libwdi 驱动分析 - libwdi 篇(五)
windows·驱动开发
(Charon)6 小时前
【C/C++面试】手写内存池:从空闲链表到内存申请与释放
java·开发语言·windows
CS创新实验室7 小时前
Python 的鸭子类型
开发语言·windows·python
kakakahahahaha7 小时前
电脑显示器无信号排查:HDMI/DP接口、独立显卡、内存与安全模式
windows·安全·电脑·笔记本电脑·内容运营·软件需求
ITHAOGE1519 小时前
下载 | Win10 2021纯净精简版,预装应用极少!(9月更新、Win10 IoT LTSC 2021版、适合老电脑)
windows·科技·物联网·微软·电脑
Vex2une1 天前
Windows 任务管理器发展史:从 80KB 救急工具到系统级监控平台
windows·进程管理·性能监控·任务管理器·winui·cpu使用率·taskmgr
Vex2une1 天前
Windows 12 新功能展望:AI 深度融合、全新界面与下一代生产力体验
人工智能·windows·copilot·winui·新功能·ai pc
LRL_1 天前
【实战指南】Node.js 跨平台依赖下载:如何在 Windows/Linux 环境下互跨下载目标系统的 npm/pnpm 包
linux·windows·node.js