如何通过DIR命令生成含指定目录及PDF文件名的树形清单(排除指定文件夹)
批处理脚本实现指定目录及子文件夹的PDF清单生成
以下是满足需求的完整批处理脚本,它会生成符合要求的文本清单,同时保留你原代码中对文件名的XXX_替换逻辑:
@echo off setlocal enabledelayedexpansion :: 定义目标根目录,可自行修改 set "rootDir=C:\MyWork" :: 定义输出的清单文件名 set "outputFile=Filelist.txt" :: 删除已存在的旧清单文件 if exist "%outputFile%" del "%outputFile%" :: 处理目标根目录 :: 提取根目录的名称(仅取路径最后一段,如C:\MyWork提取为MyWork) for %%F in ("%rootDir%") do set "rootName=%%~nxF" echo !rootName! >> "%outputFile%" :: 遍历根目录下的所有PDF文件,处理后写入清单 for %%A in ("%rootDir%\*.pdf") do ( set "filename=%%~nA" :: 移除文件名中的"XXX_"字符串(保留你原有的处理逻辑) set "filename=!filename:XXX_=!" echo !filename! >> "%outputFile%" ) :: 遍历根目录下的直接子文件夹,跳过名为"Working"的文件夹 for /d %%D in ("%rootDir%\*") do ( set "folderName=%%~nxD" :: 不区分大小写判断文件夹名称,避免大小写差异导致漏判 if /i not "!folderName!"=="Working" ( :: 写入当前子文件夹的名称 echo !folderName! >> "%outputFile%" :: 遍历该子文件夹下的PDF文件,重复处理逻辑 for %%A in ("%%D\*.pdf") do ( set "filename=%%~nA" set "filename=!filename:XXX_=!" echo !filename! >> "%outputFile%" ) ) ) endlocal echo 清单已成功生成到 %outputFile%
关键逻辑说明
- 目标目录与输出文件配置:将目标路径和输出文件名定义为变量,后续修改时只需改动开头的
rootDir和outputFile即可 - 根目录处理:先提取目录的最后一段名称写入清单首行,再遍历目录内的PDF文件,去除扩展名并替换
XXX_后写入 - 子文件夹遍历:使用
for /d遍历目标目录下的直接子文件夹,通过if /i不区分大小写排除Working文件夹,对其余文件夹执行和根目录相同的文件处理逻辑 - 延迟变量扩展:启用
enabledelayedexpansion确保循环内的变量替换能正常生效
内容的提问来源于stack exchange,提问作者WilsonChen1120
相关产品推荐
相关产品推荐

