有383人阅读过
使用bat打印喷墨打印机喷嘴测试文件
发布于2025/04/02 更新于2025/06/17
[ 教程仅保证更新时有效,请自行测试。]
发布于2025/04/02 更新于2025/06/17
[ 教程仅保证更新时有效,请自行测试。]
[ 教程仅保证更新时有效,请自行测试。]
此脚本配合测试文件,可一键发送打印任务到局域网内所有 爱普生和佳能的喷墨打印机,调用本机安装的adobe acrobat reader或者acrobat pro, 如果都没有安装,则使用系统工具,打印测试文件,测试喷嘴有没有堵
压缩包内含两个文件:
解压后,直接双击PrinterCheck.bat即可。
*可以自己替换打印测试文件nozzle_check.pdf
可在系统任务计划程序中添加定时执行,避免喷墨打印机过长时间不使用而造成的堵喷头:
在系统中搜task
打开后,根据指引 创建基本计划任务:
脚本内容如下:
@echo off
:: ==============================================
:: 多打印机静默测试打印脚本(增强版)
:: 优先使用 Acrobat Reader > Acrobat Pro > Shell 打印
:: ==============================================
title 多打印机静默测试工具
setlocal enabledelayedexpansion
:: ========== 1. 设置日志文件 ==========
set "LOG_FILE=%~dp0PrinterTest_Log_%date:~0,4%%date:~5,2%%date:~8,2%.txt"
echo [%date% %time%] 脚本启动 > "%LOG_FILE%"
:: ========== 2. 测试文件路径(PDF) ==========
set "TEST_FILE=%~dp0nozzle_check.pdf"
if not exist "%TEST_FILE%" (
echo [错误] 测试文件不存在: %TEST_FILE% >> "%LOG_FILE%"
echo 请确保 nozzle_check.pdf 位于脚本目录下!
pause
exit /b 1
)
:: ========== 3. 初始化统计 ==========
echo 正在检测打印机... >> "%LOG_FILE%"
set "PRINTER_COUNT=0"
set "EPSON_L_COUNT=0"
set "HP_OFFICEJET_COUNT=0"
:: ========== 4. 获取打印机列表 ==========
for /f "tokens=2 delims==" %%P in (
'wmic printer get name /value ^| find "Name="'
) do (
set "printer_name=%%P"
set "printer_name=!printer_name:~0,-1!"
set /a PRINTER_COUNT+=1
echo !printer_name! | findstr /i /c:"EPSON L" >nul
if !errorlevel! neq 1 (
set /a EPSON_L_COUNT+=1
call :silent_print "!printer_name!" "Epson_L"
)
echo !printer_name! | findstr /i /c:"HP OfficeJet" >nul
if !errorlevel! neq 1 (
set /a HP_OFFICEJET_COUNT+=1
call :silent_print "!printer_name!" "HP_OfficeJet"
)
)
:: ========== 5. 汇总报告 ==========
echo. >> "%LOG_FILE%"
echo ======= 打印任务汇总 ======= >> "%LOG_FILE%"
echo 检测到打印机总数: %PRINTER_COUNT% >> "%LOG_FILE%"
echo Epson L系列打印机: %EPSON_L_COUNT% >> "%LOG_FILE%"
echo HP OfficeJet系列打印机: %HP_OFFICEJET_COUNT% >> "%LOG_FILE%"
echo 详细日志见: %LOG_FILE%
:: ========== 6. 结束 ==========
echo 所有任务已完成!按任意键查看日志...
pause
start notepad "%LOG_FILE%"
exit /b
:: ========== 子函数:静默打印 ==========
:silent_print
set "printer=%~1"
set "printer_type=%~2"
echo. >> "%LOG_FILE%"
echo [%date% %time%] 正在静默打印到: %printer% (%printer_type%) >> "%LOG_FILE%"
:: ===== 尝试获取 Acrobat Reader 路径 =====
set "ACROBAT_READER="
for /f "tokens=3*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe" /ve 2^>nul') do (
set "ACROBAT_READER=%%a %%b"
)
if not defined ACROBAT_READER (
for /f "tokens=3*" %%a in ('reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\AcroRd32.exe" /ve 2^>nul') do (
set "ACROBAT_READER=%%a %%b"
)
)
:: ===== 获取 Acrobat Pro 路径 =====
set "ACROBAT_PRO="
for /f "tokens=3*" %%a in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe" /ve 2^>nul') do (
set "ACROBAT_PRO=%%a %%b"
)
if not defined ACROBAT_PRO (
for /f "tokens=3*" %%a in ('reg query "HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\Acrobat.exe" /ve 2^>nul') do (
set "ACROBAT_PRO=%%a %%b"
)
)
:: ===== 打印逻辑:优先 Reader > Pro > Shell =====
set "PRINT_TOOL="
if exist "!ACROBAT_READER!" (
echo [信息] 使用 Acrobat Reader 打印: !ACROBAT_READER! >> "%LOG_FILE%"
"!ACROBAT_READER!" /t "%TEST_FILE%" "%printer%"
set "PRINT_TOOL=Acrobat Reader"
) else if exist "!ACROBAT_PRO!" (
echo [信息] 使用 Acrobat Pro 打印: !ACROBAT_PRO! >> "%LOG_FILE%"
"!ACROBAT_PRO!" /t "%TEST_FILE%" "%printer%"
set "PRINT_TOOL=Acrobat Pro"
) else (
echo [警告] 未检测到 Acrobat Reader 或 Pro,使用 Shell.Application 打印 >> "%LOG_FILE%"
powershell -command "$file='%TEST_FILE%'; $printer='%printer%'; (New-Object -ComObject WScript.Network).SetDefaultPrinter($printer); $pdf=New-Object -ComObject Shell.Application; $pdf.Namespace(0).ParseName($file).InvokeVerb('Print')" 2>nul
set "PRINT_TOOL=Shell.Application"
)
echo [成功] 测试页已发送到 %printer% (使用方式: !PRINT_TOOL!)>> "%LOG_FILE%"
echo [提示] 如 %printer% 未打印,请检查打印机状态,是否缺墨,缺纸? >> "%LOG_FILE%"
exit /b文章对你有帮助吗?
- 一般[0]

- 很赞[0]

- 没用[0]

- 垃圾[0]

- 无语[0]





