Удалить локальные принтеры с (копия #) - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь создать пакетный файл для удаления локальных копий принтеров.Я работаю с принтерами тех же моделей, поэтому ежедневно я получаю около 10-20 экземпляров printer_name (copy #) в списке принтеров.Удаление их вручную - довольно утомительный процесс.Поэтому я решил найти способ автоматизировать его.И мне нужно удалить их только с помощью (copy #)

Моя первая идея была простой rundll32 printui.dll,PrintUIEntry /dl /n "printer_name("*, которая, очевидно, не работала, потому что подстановочные знаки не работают таким образом.Поэтому для решения проблемы я мог бы использовать findstr или find.Для которого мне нужен список, в моей ситуации список принтеров.Итак, у меня есть список принтеров с 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 Ответ

1 голос
/ 21 июня 2019

Нашел супер простое решение. И если кому-то это нужно, это выглядит так

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

Кредиты отправляются в Констанс Джилл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...