Отказ от ответственности: я не программист. У меня есть базовое понимание различных языков, у меня есть общие способности к технологиям, и я учусь на ходу. Я мучился с этой задачей в надежде, что смогу разобраться, но теперь я застрял.
Мне нужно создать пакетный файл, который будет запрашивать 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, потому что там просто написано «имя_драйвера».
Любой совет?