我想打印/或保存带有该特定子字符串的所有打印机。
@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) 使用这些示例,您将修改%%
的所有实例,以%
。