如何修改单文件PDF重命名批处理脚本以批量处理文件夹内PDF?
批量PDF提取信息并重命名脚本修改方案
直接给你调整好的完整脚本,你只需要根据实际情况替换源文件夹和目标文件夹的路径即可:
@echo off setlocal enabledelayedexpansion :: 配置文件夹路径 - 请根据你的需求修改 set "SOURCE_FOLDER=C:\Your\Source\PDF\Directory" set "DEST_FOLDER=C:\Your\Target\Directory" :: 自动创建目标文件夹(如果不存在) if not exist "%DEST_FOLDER%" mkdir "%DEST_FOLDER%" :processing_loop :: 检查源文件夹是否还有PDF文件 dir /b "%SOURCE_FOLDER%\*.pdf" | findstr "^" >nul if errorlevel 1 ( echo 所有PDF文件已处理完毕,脚本即将退出。 pause exit /b 0 ) :: 逐个遍历并处理每个PDF文件 for %%f in ("%SOURCE_FOLDER%\*.pdf") do ( set "CURRENT_PDF=%%f" set "TEMP_TXT=%%~dpnf.txt" :: 提取当前PDF的文本内容到临时TXT pdftotext -raw "!CURRENT_PDF!" "!TEMP_TXT!" :: 从TXT中提取Number和NAME信息 for /f "delims=- tokens=2" %%a in ('find "Number=" "!TEMP_TXT!"') do set "numeroa=%%a" for /f "delims== tokens=2" %%a in ('find "NAME=" "!TEMP_TXT!"') do set "nature=%%a" :: 清理变量中的多余空格(避免文件名出现无效空格) set "numeroa=!numeroa: =!" set "nature=!nature: =!" :: 生成新的文件名 set "NEW_FILENAME=OCC-!numeroa:~0,5!#!nature!.pdf" :: 重命名并移动文件到目标文件夹 move "!CURRENT_PDF!" "%DEST_FOLDER%\!NEW_FILENAME!" :: 删除临时TXT文件,避免占用空间或干扰后续处理 del "!TEMP_TXT!" echo 已完成处理:!CURRENT_PDF! → %DEST_FOLDER%\!NEW_FILENAME! ) :: 回到循环,继续处理剩余的PDF文件 goto processing_loop
核心改动说明:
- 可配置路径:新增了
SOURCE_FOLDER和DEST_FOLDER变量,不用在脚本里到处修改路径,更易维护。 - 循环处理逻辑:通过
:processing_loop标签配合dir检查,确保脚本会持续运行直到源文件夹的PDF被处理完。 - 逐个文件处理:替换了原脚本中批量重命名的粗暴操作,改用
for循环遍历每个PDF,每个文件单独生成临时TXT,避免文件覆盖或信息混乱。 - 临时文件清理:处理完每个PDF后自动删除对应的TXT,不会留下垃圾文件。
- 变量清洗:添加了去除变量空格的操作,避免生成的文件名包含无效空格。
- 进度提示:处理每个文件时会输出日志,方便你跟踪处理进度。
使用注意事项:
- 确保你的系统已经安装了
pdftotext(属于Poppler工具集),并且它的路径已添加到系统环境变量PATH中,否则脚本会找不到该命令。 - 如果PDF内的
Number=或NAME=格式有变动,需要调整for /f中的delims参数来适配实际文本格式。
内容的提问来源于stack exchange,提问作者user854146




