Хобрук: Ваш путь к мастерству в программировании

Пакетный файл для получения имени драйвера принтера; Выполнить действие, если найдено конкретное имя драйвера

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

Мне нужно создать пакетный файл, который будет запрашивать 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, потому что там просто написано «имя_драйвера».

Любой совет?

06.09.2018

  • Выход WMIC — UTF-16 со спецификацией. Это, вероятно, часть вашей проблемы. 07.09.2018
  • Могу ли я просто разместить |more перед ››printerlist.txt, чтобы позаботиться об этом? 07.09.2018

Ответы:


1

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

Код:

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
03.07.2019
Новые материалы

Блоги, которые обязательно нужно прочитать специалистам по обработке и анализу данных :
Добро пожаловать в 2020! Новый год и новое десятилетие. Поскольку мы начинаем новый и захватывающий год в науке о данных, важно, чтобы профессионалы открыли для себя лучшие блоги по науке о..

Универсальный базовый доход
Универсальный базовый доход В последние годы концепция всеобщего базового дохода (УБД) набирает обороты как все более эффективное решение для борьбы с растущим неравенством доходов и..

Освоение Python для анализа финансовых данных: руководство по получению данных о доходах от акций
Если вы хотите научиться получать данные о доходах от акций с помощью Python, то это руководство для вас! В этой статье мы рассмотрим несколько примеров сбора данных о доходах от акций. Мы..

Абсолютно имеет смысл.
Абсолютно имеет смысл. Мой репетитор даже предложил то же самое. Одна проблема, с которой я столкнулся, заключается в том, что для каждой из категорий не было ярлыка «хорошо». Если я перебираю..

МАШИННОЕ ОБУЧЕНИЕ И EDA
Каковы шаги в машинном обучении Определение проблемы Генерация гипотез Извлечение данных Исследование данных Прогнозное моделирование Развертывание модели Зачем нам ЭДА? Идентификация..

В чем основные различия между ReactJS и React-Native?
В чем основные различия между ReactJS и React-Native? Что я узнал, создавая веб-приложения, а затем мобильные приложения на React React-Native существует уже около 2 лет и стал..

LeetCode — Умножение строк
Постановка задачи Даны два неотрицательных целых числа num1 и num2 , представленные в виде строк, вернуть произведение num1 и num2 , а также представлен в виде строки. Примечание . Вы..