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

如何通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 14:55:32