Как распечатать все принтеры с определенным тегом - PullRequest
0 голосов
/ 04 июня 2019

Я хочу напечатать / или сохранить весь принтер с этой конкретной подстрокой внутри.

@echo off
pause
for /f "tokens=*" %%i in ('wmic printer get name | find /i '\\printR'') do (
    echo %%i
)
pause

Я пытаюсь запустить его, и окна cmd просто исчезают

1 Ответ

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

Этот первый пример не использует цикл и должен работать из :

@WMIC Printer Where "Name Like '\\\\printR%%'" Get Name|More +1

More +1 isиспользованный выше только для удаления строки заголовка Name, не стесняйтесь удалять этот трубопровод, если в этом нет необходимости.

Во втором примере используется цикл .представленный ниже в синтаксис:

@For /F "Skip=1Tokens=*" %%A In ('WMIC Printer Where "Name Like '\\\\printR%%'" Get Name 2^>Nul')Do @For /F "Tokens=*" %%B In ("%%A")Do @Echo(%%B

Обратите внимание, что последний не обслуживал какие-либо конечные пробелы, поэтому, если вам понадобится его для дальнейшего использования, вы быМне нужно соответственно изменить вещи (хотя общий принципал существенно не изменится) .

Я использовал оператор Like с , предполагая, что ваша строка начинается с\\printR согласно вашему вопросу.Like использует символ % в качестве подстановочного знака, поэтому я использовал его только в конце строки поиска, если вы хотите сопоставить его где-либо в строке, используйте вместо этого %%\\\\printR%%.Вы также заметите, что обратная косая черта используется как escape-символ, поэтому она удваивается, чтобы указать буквальную обратную косую черту.Вам также может быть интересно отметить, что поиск не учитывает регистр, поэтому \\PRINTr также будет соответствовать.Ответы выше также предполагают, что вы действительно хотите сопоставить свою строку \\printR с принтером Name.

Имейте в виду, что вы использовали эти примеры в команде (), вы должны изменить все экземпляры %% на %.

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