Windows 批量打印 PDF 工具分享:支持文件夹、指定文件、当天文件、预览列表

注:需要具体的脚本,请关注easy4java获取

Windows 批量打印 PDF 工具分享:支持文件夹、指定文件、当天文件、预览列表

日常办公中,经常会遇到一个很麻烦的场景:

  • 一个文件夹里有几十个 PDF 要打印
  • 每个 PDF 都要手动打开、点击打印、关闭
  • 有些 PDF 在子文件夹里,还要一个个找
  • 只想打印今天生成的 PDF
  • 打印前还想先确认一下文件列表,避免打错

如果文件数量少还好,一旦 PDF 多起来,手动操作非常浪费时间。

所以我整理了一个 Windows 下可用的 批量打印 PDF 小工具,通过一个 .bat 菜单入口配合 PowerShell 脚本,实现 PDF 批量打印。


一、工具文件

工具由两个文件组成:

BatchPrintPDF.bat

BatchPrintPDF.ps1

其中:

  • BatchPrintPDF.bat:双击运行的菜单入口
  • BatchPrintPDF.ps1:实际执行批量查找、打印、日志记录的脚本

两个文件建议放在同一个目录下。


二、这个工具能做什么?

目前支持以下几种模式:

  1. 快速打印:打印 bat 所在目录下的所有 PDF

  2. 打印某个文件夹里的所有 PDF

  3. 打印指定的多个 PDF 文件

  4. 只打印今天修改过的 PDF 文件

  5. 只列出文件,不实际打印

比较适合这些场景:

  • 批量打印发票 PDF
  • 批量打印订单 PDF
  • 批量打印合同、报价单
  • 打印当天下载或生成的 PDF
  • 办公室固定打印机批量输出文件
  • 打印前先核对 PDF 文件列表

三、使用前准备

1. Windows 系统

该工具适用于 Windows 环境。

2. 建议安装 SumatraPDF

脚本会优先检测 SumatraPDF,因为它比较轻量,适合命令行静默打印。

如果电脑中没有安装 SumatraPDF,脚本也会尝试使用:

  • Adobe Acrobat / Adobe Reader
  • Windows 默认 PDF 打印方式

但实际体验上,推荐安装 SumatraPDF,批量打印会更稳定。


四、使用方法

方法一:快速打印当前文件夹内所有 PDF

把这两个文件放到 PDF 所在文件夹:

BatchPrintPDF.bat

BatchPrintPDF.ps1

然后双击运行:

BatchPrintPDF.bat

选择:

0

工具会自动打印当前目录下的所有 PDF。


方法二:打印指定文件夹里的 PDF

运行 BatchPrintPDF.bat 后,选择:

1

然后输入或拖入文件夹路径。

程序会询问是否包含子文件夹:

Include subfolders? Y/N

如果选择 Y,会递归打印该目录及所有子目录中的 PDF。


方法三:打印指定的多个 PDF 文件

运行后选择:

2

然后逐个输入 PDF 文件路径。

输入完成后,直接回车空行结束。

适合只想打印几个指定 PDF 的情况。


方法四:只打印今天的 PDF 文件

运行后选择:

3

输入文件夹路径后,脚本会筛选出今天修改过的 PDF 文件进行打印。

适合每天固定打印当天订单、当天发票、当天生成文件的场景。


方法五:只查看文件列表,不实际打印

运行后选择:

4

这个模式不会真的打印,只会列出将要打印的 PDF 文件。

建议第一次使用时先用这个模式确认一下,避免误打。


五、默认打印机配置

脚本中默认指定的打印机名称是:

QR-368

如果你的打印机名称不是这个,需要修改 BatchPrintPDF.bat 里的打印机名称。

例如把:

set PNAME=QR-368

改成你电脑里的打印机名称,比如:

set PNAME=HP LaserJet Pro

也可以在 PowerShell 脚本中通过 -Printer 参数指定打印机。

例如:

.\BatchPrintPDF.ps1 -Path "C:\PDF文件" -Printer "HP LaserJet Pro"

bash 复制代码
@echo off
setlocal enabledelayedexpansion
title Batch Print PDF

echo.
echo ========================================
echo         Batch Print PDF
echo ========================================
echo.
echo  0. Quick print (all PDF in same folder as this bat)
echo  1. Print all PDF in a folder
echo  2. Print specific PDF files
echo  3. Print today's PDF files only
echo  4. List files only (no actual printing)
echo.
set /p CHOICE="Select [0-4]: "

if "%CHOICE%"=="0" goto QUICK_MODE
if "%CHOICE%"=="1" goto DIR_MODE
if "%CHOICE%"=="2" goto FILE_MODE
if "%CHOICE%"=="3" goto TODAY_MODE
if "%CHOICE%"=="4" goto WHATIF_MODE
echo Invalid choice.
pause
exit /b 1

:QUICK_MODE
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0BatchPrintPDF.ps1" -Path "%~dp0" -Printer "QR-368" -DelaySeconds 2 -Force
goto END

:DIR_MODE
echo.
set /p DIR_PATH="Folder path (drag folder here): "
set /p SUB="Include subfolders? [Y/N]: "
set RFLAG=
if /i "!SUB!"=="Y" set RFLAG=-Recurse
set PNAME=QR-368
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0BatchPrintPDF.ps1" -Path "!DIR_PATH!" !RFLAG! -Printer "!PNAME!"
goto END

:FILE_MODE
echo.
echo Enter PDF file paths one by one. Press Enter on empty line when done.
set FLIST=
:FILE_LOOP
set /p FONE="  File path: "
if "!FONE!"=="" goto DO_FILES
set FLIST=!FLIST! "!FONE!"
goto FILE_LOOP
:DO_FILES
set PNAME=QR-368
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0BatchPrintPDF.ps1" -Path !FLIST! -Printer "!PNAME!"
goto END

:TODAY_MODE
echo.
set /p DIR_PATH="Folder path: "
set PNAME=QR-368
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0BatchPrintPDF.ps1" -Path "!DIR_PATH!" -Today -Recurse -Printer "!PNAME!"
goto END

:WHATIF_MODE
echo.
set /p DIR_PATH="Folder path: "
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0BatchPrintPDF.ps1" -Path "!DIR_PATH!" -Recurse -WhatIf
goto END

:END
echo.
pause
endlocal

工具:Sumatra PDF reader download page

相关推荐
rhythm-ring2 小时前
TortoiseSVN 配置 Beyond Compare 注意事项
windows
凡人叶枫2 小时前
Effective C++ 条款38:通过复合塑模出 has-a 或 \“根据某物实现出\
linux·开发语言·c++·windows
caimouse3 小时前
Reactos 第 9 章 设备驱动 — 9.14 IRP请求的完成与返回
windows
虾壳云官方3 小时前
openclaw 一键安装教程(2026年6月15最新)
运维·人工智能·windows·自动化·openclaw
qq_338432374 小时前
VSCode Remote-SSH 远程 Windows Server 卡死的排查与解决
windows·vscode·ssh
大佐不会说日语~4 小时前
在 Windows 本地用 Docker 部署向量模型(bge-m3)
windows·docker·容器·llm·ollama
凡人叶枫5 小时前
Effective C++ 条款37:绝不重新定义继承而来的缺省参数值
linux·c++·windows
ccino .5 小时前
【电脑的睡眠和休眠区别】
windows
AndyHuang19766 小时前
【避坑指南】Visual Studio 插件报错 “Windows Terminal (wt.exe) was not found in PATH“ 完美解决
ide·windows·visual studio