有164人阅读过
使用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]