老板突然要打印几十份合同 批处理命令教你一键批量打印 省去逐个打开的麻烦

那天下午五点,老板突然冲进办公室,语气急得像着了火:”明天上午就要用,赶紧把合同部准备的20多份合同全打印出来,装订好!”

你看着电脑屏幕上那堆PDF和Word文档,心里一阵哀嚎。一个个打开、点击打印,估计得弄到半夜。别慌,今天教你一招,让电脑自己帮你干完这活儿。

为啥要搞批量打印?

先说个场景,你可能遇到过:

  • 客户说要合同,你手上有几十份不同客户的文档
  • 年底整理材料,一堆文件要打印存档
  • 面试当天要给每个候选人准备材料

这时候如果还挨个打开文件打印,简直是浪费生命。咱们用批处理命令,点一下,全搞定。

准备工作:先理清楚再说

在动手之前,咱们先要把事情捋明白:

1. 文档都放哪?

先把所有要打印的合同文件放在同一个文件夹里。比如你在D盘建个文件夹,叫合同打印,把文件都丢进去:

D:\合同打印\
├── 张三_劳动合同.pdf
├── 李四_劳动合同.pdf
├── 王五_劳动合同.pdf
└── ...(二十几个文件)

文件名称不用太整齐,但放一个文件夹里是关键,这样咱们后面写命令的时候好找它们。

2. 确认打印机状态

打开电脑的控制面板 -> 设备和打印机,确认你的打印机已经连接好,而且设置成了默认打印机。如果有多台打印机,也得先挑好你要用哪一台。

方法一:最简单的方式 —— 选中打印

如果你不想记任何命令,这是最快最省事的办法:

  1. 打开刚才那个文件夹,按 Ctrl + A 全选所有文件
  2. 在选中的文件上右键点击
  3. 选择打印

系统会自动把每个文件打开、发送打印任务、然后关闭。就这么简单。

缺点:有些格式的文件(比如PDF)可能会因为打开/关闭而卡顿,几十份文件可能要等一段时间。而且你无法控制打印的具体设置(比如双面打印、份数等)。

方法二:PowerShell 一键批量打印 —— 推荐!

这是我觉得最实用的方法,写一次脚本,以后遇到类似的事情直接复用。

第一步:创建脚本文件

在你的电脑上新建一个文本文件,把下面这段代码复制进去:

# 批量打印指定文件夹中的所有文件
# 使用方法:把这段代码保存为 print_all.ps1,然后运行

# 设置要打印的文件夹路径
$folderPath = "D:\合同打印"

# 获取文件夹里所有文件
$files = Get-ChildItem -Path $folderPath -File

# 遍历每个文件并发送打印
foreach ($file in $files) {
    Write-Host "正在打印: $($file.Name)"
    Start-Process -FilePath $file.FullName -Verb Print
}

Write-Host "所有文件已发送到打印机!"

第二步:保存脚本

把上面的代码保存为 批量打印.ps1,位置随便放,比如桌面。

第三步:运行脚本

右键点击这个 .ps1 文件,选择使用 PowerShell 运行

如果提示权限问题,可以这样做:

  1. Win + X,选择 Windows PowerShell(管理员)
  2. 输入下面这行命令来允许运行脚本:
    
    Set-ExecutionPolicy RemoteSigned
    
  3. 然后运行:
    
    powershell -ExecutionPolicy Bypass -File "C:\Users\你的用户名\Desktop\批量打印.ps1"
    

运行之后,你会看到命令行里不断滚动显示文件名,说明打印任务正在发送。

进阶版:加入更多功能

上面的脚本很简单,但有时候我们需要更智能一点。比如:

  • 只打印特定格式的文件(比如只打印PDF)
  • 打印前确认一下
  • 等待每个文件打印完再处理下一个(避免打印机卡死)

下面是一个更完善的版本:

# 智能批量打印脚本 - 进阶版
# 功能:只打印指定格式、显示进度、等待完成

# ====== 配置区 ======
$folderPath = "D:\合同打印"           # 打印文件夹路径
$fileExtensions = @("*.pdf", "*.docx") # 要打印的文件类型(可以自定义)
# ===================

# 检查文件夹是否存在
if (-not (Test-Path $folderPath)) {
    Write-Host "错误:文件夹不存在!路径是 $folderPath" -ForegroundColor Red
    exit
}

# 获取所有符合条件的文件
$files = Get-ChildItem -Path $folderPath -File |
    Where-Object { $fileExtensions -match $file.Extension }

$total = $files.Count
$printed = 0

if ($total -eq 0) {
    Write-Host "没有找到符合条件的文件!" -ForegroundColor Yellow
    exit
}

Write-Host "找到 $total 个文件,开始打印..." -ForegroundColor Green
Write-Host "================================"

foreach ($file in $files) {
    $printed++
    $progress = "正在打印 $printed / $total : $($file.Name)"
    Write-Host $progress

    try {
        # 发送打印任务
        Start-Process -FilePath $file.FullName -Verb Print -ErrorAction Stop

        # 等待一小段时间,让打印机有时间处理
        Start-Sleep -Milliseconds 500
    }
    catch {
        Write-Host "打印失败:$($file.Name) - $($_.Exception.Message)" -ForegroundColor Red
    }
}

Write-Host "================================" -ForegroundColor Green
Write-Host "全部完成!共打印 $printed / $total 个文件" -ForegroundColor Green

把这个保存为 批量打印_智能版.ps1,用的时候改一下 $folderPath 那行的路径就行。

方法三:用 bat 批处理命令 —— 最原始但最通用

如果你不想用 PowerShell,也可以用传统的 .bat 批处理文件。这个方式的优点是任何Windows版本都能用

创建批处理文件

新建一个文本文件,写入以下内容:

@echo off
chcp 65001 >nul
echo ========================================
echo        批量打印合同文件
echo ========================================
echo.

REM 设置文件夹路径,改这里!
set "FOLDER=D:\合同打印"

REM 检查文件夹
if not exist "%FOLDER%" (
    echo 错误:文件夹不存在!
    pause
    exit /b 1
)

echo 开始打印...
echo.

REM 遍历所有PDF文件并打印
for %%F in ("%FOLDER%\*.pdf") do (
    echo 正在打印: %%~nxF
    start /min print "%%F"
    timeout /t 1 /nobreak >nul
)

REM 遍历所有Word文件并打印
for %%F in ("%FOLDER%\*.docx" "%FOLDER%\*.doc") do (
    echo 正在打印: %%~nxF
    start /min print "%%F"
    timeout /t 1 /nobreak >nul
)

echo.
echo ========================================
echo 全部打印任务已发送!
echo ========================================
pause

保存为 批量打印.bat,用的时候双击运行就行。

这个脚本的工作原理

  • start /min print "文件路径" 这行命令是关键,它会把文件发送到默认打印机
  • timeout /t 1 是让每个文件之间暂停1秒,避免打印机 overwhelm
  • 你只需要改 FOLDER 那行的路径,其他不用动

几个实用小技巧

1. 打印时指定份数

有时候你需要打印好几份,可以这样改脚本里的打印命令:

在 PowerShell 里:

# 打印3份
$printJob = Start-Process -FilePath $file.FullName -Verb Print -PassThru

在 bat 里:

print /d:"\\打印机共享名" "文件路径"

2. 只打印 PDF

如果文件夹里有很多 Word 文档,但你只想打印 PDF:

# 只获取PDF文件
$files = Get-ChildItem -Path $folderPath -Filter "*.pdf" -File

3. 检查打印队列

打印完之后,想知道打印机任务排到哪了?

  • Win + R,输入 control printers 打开打印机设置
  • 右键你的打印机,选择查看现在正在打印什么
  • 就能看到所有等待打印的文件

注意事项和避坑指南

⚠️ 纸够不够?

别笑,真有人打了一半发现没纸了。先检查打印机纸盒,确认纸张充足。

⚠️ 双面打印怎么设?

如果需要双面打印,建议先手动打印一份测试,确认打印机设置正确后再批量打印。可以在打印设置里选择”双面打印”,但这通常需要在打印前逐个设置,批量打印时不太好控制。

⚠️ 文件不要同时打开

批量打印时,确保你要打印的文件没有正在被其他程序打开,否则可能会打印出错或者重复打印。

⚠️ 打印机要稳定

如果打印机正在处理其他任务,建议等它空闲了再开始批量打印,不然可能会卡顿或者丢文件。

最后说两句

其实这事儿没那么复杂,核心就一句话:让电脑帮你干活,而不是你帮电脑干活

刚开始你可能觉得写个脚本有点麻烦,但一旦你写好了、试成功了,以后每次遇到类似的情况,都是点一下鼠标的事。而且这套方法不只是打印合同能用,打印发票、打印报表、打印材料……只要是批量打印的需求,这个思路全都能套上。

下次老板再突然让打印几十份文件,你就可以淡定地说一句”好的,马上就好”,然后点一下脚本,去喝杯咖啡了。