Пакетный файл для получения имени драйвера принтера; Выполните действие, если определенное имя драйвера найдено - PullRequest
0 голосов
/ 06 сентября 2018

Отказ от ответственности: я не программист.У меня есть базовое понимание различных языков, у меня есть общая склонность к технологиям, и я учусь на ходу.Я ломал голову над этой задачей, надеясь, что смогу разобраться, но теперь я застрял.

Мне нужно создать командный файл, который будет запрашивать Windows и предоставит мне имя драйвера.из всех установленных принтеров, и если на машине присутствует определенное имя драйвера, выполните другое действие (в этом случае запустите утилиту командной строки, которая изменит настройки принтера).

Пока что у меня есть "краудсорсинг "некоторый код из различных ресурсов в Интернете, но я не смог успешно заставить командный файл делать то, что я хочу.

КОД:

@echo
setlocal
wmic printer get DriverName >> printerlist.txt
set count=0
FOR /F "skip=1 delims= " %%G IN (printerlist.txt) DO call :loop %%G %%H %%I
:loop
if "%1"=="" goto :endloop
if "%1"=="HP" (
   if "%2"=="DeskJet" (
      if "%3"=="1000" (
         echo Found: HP DeskJet 1000
         )
      if "%3"=="2000" (
         echo Found: HP DeskJet 2000
         )
      if "%3"=="3000" (
         echo Found: HP DeskJet 3000
         )
      pause
      )
   )
SHIFT
goto :loop
:endloop

По сути, яСобрал это вместе, как тест для отображения сообщения в CMD, если он найдет одно из трех конкретных имен драйверов принтеров.В конечном итоге я заменю эхо-запрос другой операцией, если я смогу заставить его работать.Я думаю, что должно произойти, что пакетный файл будет захватывать все имена драйверов принтера и заполнять их в файл .txt (эта часть работает нормально).Затем пакетный файл зациклится и заглянет внутрь файла .txt и, используя пробел в качестве разделителя, найдет конкретные модели принтеров, которые я ищу, и отобразит эхо.В настоящий момент, если я запусту этот командный файл, он создаст файл .txt, но затем выйдет без отображения сообщений.Я посмотрел в файле .txt, и один из принтеров находится в файле, например, "HP DeskJet 1000".Если вам интересно, я пропускаю строку 1, потому что там просто написано «DriverName».

Любой совет?

1 Ответ

0 голосов
/ 03 июля 2019

Имейте в виду, я тоже не программист. Следующее является хакерским кодированием и почти наверняка не самым эффективным решением. Тем не менее, это должно работать.

Код:

FOR /F "skip=1 tokens=1,2,3* delims= " %%G IN ('wmic printer get DriverName') DO (
SET ONE=%%G
SET TWO=%%H
SET THREE=%%I
CALL :LOOP
)

GOTO ENDLOOP
:LOOP

if "%ONE%"=="" GOTO ENDLOOP
if %ONE%==HP GOTO FIRSTCHECK
GOTO :EOF

:FIRSTCHECK
if %TWO%==DESKJET GOTO SECONDCHECK
GOTO :EOF

:SECONDCHECK
if %THREE%==1000 GOTO 1000
if %THREE%==2000 GOTO 2000
if %THREE%==3000 GOTO 3000
GOTO :EOF

:1000
ECHO Found HP DeskJet 1000
pause
GOTO :EOF

:2000
ECHO Found HP DeskJet 2000
pause
GOTO :EOF

:3000
ECHO Found HP DeskJet 3000
pause
GOTO :EOF

:ENDLOOP
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...