583
文章
·
61440
阅读
583
文章
·
61440
阅读

有164人阅读过 使用bat打印喷墨打印机喷嘴测试文件
发布于2025/04/02 更新于2025/06/17
[ 教程仅保证更新时有效,请自行测试。]

此脚本配合测试文件,可一键发送打印任务到局域网内所有 爱普生和佳能的喷墨打印机,调用本机安装的adobe acrobat reader或者acrobat pro, 如果都没有安装,则使用系统工具,打印测试文件,测试喷嘴有没有堵

printertest.rar


压缩包内含两个文件:

image.png


解压后,直接双击PrinterCheck.bat即可。

*可以自己替换打印测试文件nozzle_check.pdf


可在系统任务计划程序中添加定时执行,避免喷墨打印机过长时间不使用而造成的堵喷头:

在系统中搜task

image.png

打开后,根据指引 创建基本计划任务

image.png


脚本内容如下:

@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]
扫一扫,手机浏览手机访问本站