前言
现在打印都要开始收费了,批量打印 PDF 这个功能免费不太可能了。故自己捣鼓了一个批量打印的方法。
准备工作
第一步:安装 Acrobat Reader DC 32位
必须装32 位版本(64位有兼容问题):
- Reader_cn_install.exe(访问密码:9280)
默认安装路径:
C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\制作批处理脚本
第二步:新建文本文件
新建一个文本文档,输入以下内容:
@echo off
setlocal enabledelayedexpansion
:: 获取默认打印机名称
for /f "tokens=2 delims=:" %%a in ('wmic printer where "default=true" get name /value') do set printerName=%%a
:: 处理拖拽过来的文件
for %%f in (%*) do (
echo 正在打印文件:%%f
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /h /t "%printerName%" "%%f"
)
pause第三步:另存为 .bat 文件
保存时:
- 文件名:
批量打印PDF.bat - 保存类型:所有文件
💡 修改后缀名后,图标应该变成齿轮形状,才表示成功。
使用方法
方法一:拖放打印
- 把要打印的 PDF 文件全部选中
- 拖到
批量打印PDF.bat图标上 - 脚本自动逐个打印
方法二:命令行调用
批量打印PDF.bat "D:\文件1.pdf" "D:\文件2.pdf"方法三:右键发送到
可以把脚本创建快捷方式到 SendTo 文件夹:
- 打开
C:\Users\你的用户名\AppData\Roaming\Microsoft\Windows\SendTo - 创建
批量打印PDF.bat的快捷方式 - 右键 PDF 文件 → 发送 → 批量打印PDF
脚本参数详解
/h 参数
最小化运行 Acrobat Reader,不显示窗口。
/t 参数
/t <打印机> <文件>:静默打印到指定打印机。
示例
AcroRd32.exe /h /t "打印机名" "D:\test.pdf"常见问题
Q:找不到 AcroRd32.exe?
检查安装路径:
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"修改脚本中的路径为实际路径。
Q:打印机名称不对?
运行 wmic printer get name 查看所有打印机名称。
Q:批量打印顺序乱了?
按文件名字符串顺序处理。可以加 sort。
Q:部分文件没打印?
- 检查 PDF 是否损坏
- 检查打印机是否在线
- 检查打印机驱动是否正常
Q:弹出打印机对话框?
脚本应使用 /t 参数而非 /p,这样不显示界面。
进阶用法
双面打印
@echo off
setlocal enabledelayedexpansion
for %%f in (%*) do (
echo 正在双面打印:%%f
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /h /t "打印机名称" "%%f"
)
pause需要在打印机驱动里设置默认双面。
指定打印机
修改脚本中的 %printerName%:
@echo off
set printerName="EPSON LQ-630K"
for %%f in (%*) do (
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /h /t %printerName% "%%f"
)
pause添加日志
@echo off
setlocal enabledelayedexpansion
set logfile=%USERPROFILE%\Desktop\print_log.txt
for /f "tokens=2 delims=:" %%a in ('wmic printer where "default=true" get name /value') do set printerName=%%a
for %%f in (%*) do (
echo %date% %time% 正在打印:%%f >> %logfile%
"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /h /t "%printerName%" "%%f"
)
pauseAcrobat Reader 命令行参数
| 参数 | 说明 |
|---|---|
/n | 启动新实例 |
/h | 最小化窗口 |
/s | 不显示启动画面 |
/o | 不显示打开对话框 |
/t | 静默打印 |
/p | 弹出打印对话框 |
替代方案
1. SumatraPDF(推荐)
更轻量的 PDF 阅读器,命令行:
SumatraPDF.exe -print-to "打印机名" -silent "file.pdf"支持更多 PDF 命令行参数。
2. PowerShell + Acrobat
$files = Get-ChildItem "D:\PDFs\*.pdf"
foreach ($file in $files) {
Start-Process "AcroRd32.exe" -ArgumentList "/h /t", "打印机名", "$($file.FullName)"
}3. Python 脚本
import os
import subprocess
printer = "EPSON LQ-630K"
acrobat = r"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
for f in os.listdir(r"D:\PDFs"):
if f.endswith(".pdf"):
path = os.path.join(r"D:\PDFs", f)
subprocess.run([acrobat, "/h", "/t", printer, path])4. 第三方工具
- PDFsam:免费开源 PDF 工具
- Bullzip PDF Printer:虚拟打印机
- Adobe Acrobat Pro:官方付费版(带批量功能)
注意事项
⚠️ 限制
- 仅支持 32 位 Acrobat Reader
- 64 位 Acrobat Reader 路径不同
- 需要安装桌面版 Reader,不是 Edge 插件
💡 优化建议
- 把脚本放在桌面方便使用
- 创建多个脚本对应不同打印机
- 大批量打印时先打印几份测试
总结
这个 BAT 脚本虽然简单,但解决了大问题:
- ✅ 免费:不依赖付费软件
- ✅ 批量:一次打印多个 PDF
- ✅ 灵活:可自定义打印机和参数
- ✅ 简单:拖拽即用
特别适合:
- 🏢 办公室日常打印
- 📑 财务批量打印凭证
- 📚 教师批量打印资料
- 🏠 家庭用户