Пакет: Как проверить, существует ли сетевой принтер общего доступа?

Пакет: Как проверить, существует ли сетевой принтер общего доступа?

Я могу проверить, существует ли сетевая папка

IF EXIST \\192.168.1.2\SharedFolder\ (echo It exist)

но я не включаю проверку наличия сетевого принтера.

IF EXIST \\192.168.1.2\printername (echo It exist)

решение1

Следующеескрипт с Robvanderwoude.comтесты на наличие принтера:

REM NOTE: RUNDLL32.exe and PRINTUI.exe always return Errorlevel=0
REM The trick: Try to get the printer settings into a file
REM If No file is created = The Printer does not exist
SET PrinterName=FIT FP-32L Raster
SET TESTfile=%TEMP%\PrtExist.txt

REM Delete %TESTfile% to avoid false positives
DEL %TESTfile% /F /Q

REM Try to get the printer settings into a file
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%TESTfile%" /q

IF EXIST "%TESTfile%" (
    ECHO %PrinterName% printer exists
) ELSE (
    ECHO %PrinterName% printer does NOT exists
)

PAUSE

решение2

Я нашел эту тему, когда искал способ улучшить свой deleteprinters.bat, чтобы обойти всплывающие сообщения «Принтер не найден», которые прерывают мой скрипт.

Но в этом случае самый простой способ справиться с этим — просто добавить параметр /q после RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry.

На всякий случай.

Связанный контент