Printing 脚本以检查打印机是否在本地存在,如果存在,则将其删除

Printing 脚本以检查打印机是否在本地存在,如果存在,则将其删除,printing,batch-file,Printing,Batch File,我正在编写windows批处理文件,需要检查本地计算机上是否存在打印,如果存在,则从计算机上删除映射的打印机。这是我用来删除打印机的代码 RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn 这很好,但是现在我需要一个条件语句,所以我首先检查打印机是否存在。然后跑那条线。我不知道该怎么写。您可以尝试类似的方法,只需将要查找的字符串替换为要查找的打印机即可 For /F "Tokens=4 delims=\" %%I In (

我正在编写windows批处理文件,需要检查本地计算机上是否存在打印,如果存在,则从计算机上删除映射的打印机。这是我用来删除打印机的代码

RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn

这很好,但是现在我需要一个条件语句,所以我首先检查打印机是否存在。然后跑那条线。我不知道该怎么写。

您可以尝试类似的方法,只需将要查找的字符串替换为要查找的打印机即可

For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "560C"') Do If "%%I"==",,ServerName,HP DeskJet 560C" goto :REMOVE
goto :SKIP
:REMOVE
RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn
:SKIP
或者只是运行命令,如果它不存在,它会出错,如果它存在,它会工作吗


希望这有帮助

您可以跳过检查并运行删除命令。 要抑制错误弹出窗口,只需添加中指定的
/q
选项。 这将产生:

RUNDLL32 printui.dll,PrintUIEntry /n \\server\printerName /dn /q

你能不能不直接运行它?如果它不存在,那么它不会做任何事情,如果它存在,那么它会删除它?我可以,但它给我一个错误,然后继续下一行。我正在运行一个启动脚本,所以我希望它是无错误的。除非这不是问题(我对这种类型的代码不太熟悉),否则“无法删除打印机连接。请仔细检查打印机名称并确保打印机已连接到网络。”好的,请参阅下面的答案,也许这会有所帮助。最后一件事,很抱歉再次访问此问题。如何在相同的脚本中为不同的打印机运行相同的代码?我试着重复剧本下的台词,但没有这样做。谢谢对不起,我不知道你的意思。这段代码在您现有的脚本中不起作用吗?或者您需要寻找另一台打印机,在这种情况下,请将find命令更改为正确的打印机?我编写的代码是您提供的代码,两次,以便我逐个查找两台不同的打印机。不幸的是,只有当我只重复了一次代码时,脚本才起作用。我不确定我是否必须在代码之间插入一些东西,或者它是否不能以这种方式工作。啊,对了,那将是因为出口。我现有的代码在运行或不运行后将退出。我会为你编辑我的答案,2秒。我现在已经编辑了我的答案。如果打印机存在,它将转到:REMOVE行,如果不存在,它将落在下一行上,该行将通过:REMOVE并跳过它。然后在:SKIP之后,您可以添加更多代码,因此如果您想在另一台打印机上重复代码,只需确保您有不同的标签名称,如:REMOVE2和:SKIP2或其他。如果你需要帮助,请告诉我。