如何打印带有特定标签的所有打印机



我想打印/或保存带有该特定子字符串的所有打印机。

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

我尝试运行它,cmd窗口消失了

第一个示例不使用 for 循环,应该从批处理文件工作:

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

上面使用More +1只是为了删除标题行Name,如果不需要,请随意删除该管道。

第二个示例使用 for 循环 do,下面以批处理文件语法呈现:

@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

请注意,后者没有迎合任何尾随空格,所以如果你需要它来进一步使用,你需要相应地修改东西,(尽管一般原则不会有显着变化)。

我已经使用了带有 where 的Like运算符,假设您的字符串根据您的问题以\printR开头。Like使用%字符作为通配符,所以我只在搜索字符串的末尾使用它,如果您想在字符串中的任何位置匹配它,请使用%%\\printR%%代替。您还将注意到,反斜杠用作转义字符,因此会加倍以指定文字反斜杠。您可能还有兴趣注意搜索不区分大小写,因此\PRINTr也将匹配。上面的答案还假设您实际上想要将\printR字符串与打印机Name相匹配。

请记住,如果您在命令提示符 (cmd) 使用这些示例,您将修改%%的所有实例,以%

最新更新