首页 > 解决方案 > 用于检索打印机驱动程序名称的批处理文件;如果找到特定驱动程序名称,则执行操作

问题描述

免责声明:我不是程序员。我对不同的语言有基本的了解,对技术有一般的能力,并且我正在学习。我一直在忙着完成这项任务,希望我能弄明白,但现在我被困住了。

我需要创建一个批处理文件来查询 Windows 并为我提供所有已安装打印机的驱动程序名称,如果机器上存在特定的驱动程序名称,请执行另一个操作(在这种情况下,运行将更改的命令行实用程序打印机的首选项)。

到目前为止,我已经从 Internet 上的各种资源中“众包”了一些代码,但我无法成功地获取批处理文件来做我想做的事情。

代码:

@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”。如果你好奇,我

有什么建议吗?

标签: batch-fileprintingwmic

解决方案


请注意,我也不是程序员。以下是hack编码,几乎可以肯定不是最有效的解决方案。那就是说它应该工作。

代码:

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

推荐阅读