手中的剑为什么而挥动
只有靠你自己去寻找答案----盖聂

自动遍历文件夹,列出所有文件,并为 PDF 文件额外标注页数

自动遍历文件夹,列出所有文件,并为 PDF 文件额外标注页数

使用:下载附件 把附件所有内容放置根目录,运行bat命令,生成结果
附件:1-智能文件清单生成器.bat
附件:1-pdfinfo及其依赖.zip


 

✅ 核心功能


该脚本会 自动扫描当前目录及其所有子目录中的每一个文件,生成一个名为 AllFiles.csv 的 CSV 格式清单文件,包含以下三列信息:

 

列名 说明

文件路径 文件相对于脚本所在目录的路径(例如:Reports\2025\summary.pdf)
文件名(无扩展名) 去掉扩展名后的文件主名(例如:summary)
页数(PDF) 如果是 PDF 文件,显示其总页数;否则显示 N/A

🔍 详细行为说明

  1. 自动运行位置
    • 脚本只处理 它自己所在的文件夹及所有子文件夹
    • 无需手动指定路径,双击即可运行。
  2. 支持所有文件类型
    • 不仅限于 PDF,所有文件(如 .docx.xlsx.jpg.txt 等)都会被列出。
    • 但只有 .pdf(不区分大小写,如 .PDF 也有效)会尝试读取页数。
  3. PDF 页数识别原理
    • 使用外部工具 pdfinfo.exe(来自 Poppler/Xpdf)解析 PDF 内容。
    • 自动匹配英文 Pages: 或中文 页数: 字段,兼容多语言系统
    • 若 PDF 损坏、加密或无法读取,页数显示为 N/A(不会中断脚本)。
  4. 安全处理特殊字符
    • 支持文件/目录名中包含:
      • 中文(如 报告.pdf
      • 空格(如 年度 总结.pdf
      • 特殊符号(如 合同(2025).pdfdata&info.xlsx
    • 通过临时文件中转 pdfinfo 输出,避免命令行解析错误。
  5. 输出格式
    • 生成标准 CSV 文件(可用 Excel、WPS、记事本打开)。
    • 所有字段用英文双引号包裹,防止逗号干扰(如文件名含逗号也能正确显示)。
    • 编码为系统默认 ANSI(在中文 Windows 上通常为 GBK),Excel 可直接打开。
  6. 错误防护
    • 若未找到 pdfinfo.exe,会提示用户下载并退出。
    • 自动清理临时文件,不留垃圾。
    • 非 PDF 文件不会调用 pdfinfo,提升速度。

 

⚙️ 依赖项(必须提供)

pdfinfo.exe 及其依赖 DLL 文件
来源:Poppler for Windows
➤ 需将 整个 bin 文件夹内容 复制到脚本同目录!
💡 提示:脚本会自动检查 pdfinfo.exe 是否存在,缺失时会友好提示。

🧩 适用场景
快速统计项目中所有 PDF 文档的页数
生成文件资产清单(用于归档、审计、交接)
批量预处理前了解文档规模
教育/办公环境中整理电子资料

🚫 局限性
不能解析加密/受保护的 PDF(页数显示为 N/A)
依赖外部工具(纯批处理无法读取 PDF 内容)
不适用于超大目录(数万文件时速度较慢)
✅ 总结一句话:
这个脚本是一个“智能文件清单生成器”,能自动遍历文件夹,列出所有文件,并为 PDF 文件额外标注页数,结果保存为 Excel 友好的 CSV 表格。


下载 Poppler Windows 包
 https://github.com/oschwartz10612/poppler-windows/releases/download/v24.09.0/poppler-24.09.0-win64.zip
解压后进入 poppler-24.09.0-win64\Library\bin
将该 bin 文件夹内所有文件(约 50+ 个)复制到你的 .bat 脚本所在目录
放一个测试 PDF 文件(如 test.pdf)在同一目录
双击运行脚本
打开 AllFiles.csv,检查 PDF 行是否有页数


bat脚本

@echo off
setlocal enabledelayedexpansion

set "output=%~dp0AllFiles.csv"
set "pdfinfo=%~dp0pdfinfo.exe"
set "tempfile=%temp%\pdf_pages.tmp"

if not exist "%pdfinfo%" (
echo 错误:未找到 pdfinfo.exe!
echo 请将 pdfinfo.exe 及其依赖 DLL 放在本脚本同目录。
pause
exit /b
)

:: 强制英文输出
set "LC_ALL=C"

> "%output%" echo 文件路径,文件名(无扩展名),页数(PDF)

for /f "delims=" %%F in ('dir /s /b /a-d "%~dp0"') do (
set "full=%%F"
set "rel=!full:%~dp0=!"
set "name=%%~nF"
set "ext=%%~xF"
set "pages=N/A"

if /i "!ext!"==".pdf" (
:: 调用 pdfinfo 并输出到临时文件(安全处理带空格/特殊字符的路径)
"%pdfinfo%" "!full!" > "!tempfile!" 2>nul

:: 从临时文件中查找 Pages 行
for /f "tokens=2" %%P in ('findstr /R /C:"^Pages:" /C:"^页数:" "!tempfile!" 2^>nul') do (
set "pages=%%P"
)
)

:: 安全写入 CSV(字段用双引号包裹)
echo "!rel!","!name!","!pages!" >> "%output%"
)

:: 清理临时文件
del /q "%tempfile%" 2>nul

echo.
echo 成功生成:%output%
pause
赞(0) 打赏
未经允许不得转载:云浅 » 自动遍历文件夹,列出所有文件,并为 PDF 文件额外标注页数

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫