使用(副本#)删除本地打印机

时间:2019-06-21 17:30:17

标签: batch-file wmic

我正在尝试创建批处理文件以删除打印机的本地副本。我正在使用相同型号的打印机,因此每天在打印机列表中大约有10-20个printer_name(copy#)实例。手动删除这些是非常繁琐的过程。因此,我决定找到一种自动化的方法。而且我只需要使用(copy#)

删除它们

我的第一个想法是简单的rundll32 printui.dll,PrintUIEntry /dl /n "printer_name("*,显然不起作用,因为通配符不能那样工作。因此,为了解决该问题,我可以使用findstrfind。为此,我需要一个列表,在我的打印机情况列表中。因此,我得到了带有wmic printer get name的打印机列表,在这里我陷入了困境。由于将有很多打印机,所以最好的情况是将列表分配给阵列,然后创建循环以从阵列中检查所需的打印机并删除它们。 set list = wmic printer get name出现错误的地方。我假设我需要使用/n来告诉脚本,新行是数组中的新条目。但是我不知道如何将wmic的结果解析为一个数组

如果有任何必要的方法,我很乐意提供有关如何删除所需打印机的更好的主意,或者将列表附加到阵列方面的帮助,我将不胜感激。因为wmic printer get name会打印出这样的内容

printer1
printer2
printer2(copy 1)
printer2(copy 2)
printer3
printer3(copy 1)

正如我之前提到的,我只需要删除printer2(副本1),printer2(副本2)和printer3(副本1)

提前谢谢

1 个答案:

答案 0 :(得分:1)

找到了一个超级简单的解决方案。而且如果有人需要,它看起来像这样

wmic printer where (name like '%%(copy %%') delete

信用归ConstanceJill