命令提示wmic命令中的字符串操作



此文本的顶部是我从cmd命令wmic printer get name, portname获得的输出。有没有什么方法可以让我在命令中添加一些东西,让cmd输出底部字符串作为输出,这样我就可以得到了

打印机:端口

对于我的打印机列表中的每个打印机,用逗号分隔每个打印机?

根据您的评论,这里有几个使用CSV格式的基本示例。

第一个不是以附加的尾部逗号结束每一行:

cmd

For /F "Tokens=1,* EOL=, Delims=," %G In ('%SystemRoot%System32wbemWMIC.exe Printer Get Name^, PortName /Format:CSV 2^>NUL') Do @Echo(%H

批处理文件

@For /F "Tokens=1,* EOL=, Delims=," %%G In ('%SystemRoot%System32wbemWMIC.exe Printer Get Name^, PortName /Format:CSV 2^>NUL') Do @Echo(%%H

如果你想要一个额外的尾随逗号,那么下面的方法应该做到:

cmd

For /F "Tokens=1,* EOL=, Delims=," %G In ('%SystemRoot%System32wbemWMIC.exe Printer Get Name^, PortName /Format:CSV 2^>NUL') Do @For /F "Tokens=*" %I In ("%H") Do @Echo %I,

批处理文件

@For /F "Tokens=1,* EOL=, Delims=," %%G In ('%SystemRoot%System32wbemWMIC.exe Printer Get Name^, PortName /Format:CSV 2^>NUL') Do @For /F "Tokens=*" %%I In ("%%H") Do @Echo %%I,

然而,这两个例子都没有提供如图所示的输出,你不应该包括在你的问题中,(你应该在代码框中提交文本(。要获得类似的内容,/Format类型不需要是CSV。

下面是一个批处理文件示例,它使用RAWXML

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "i="
For /F "Tokens=1,3 Delims=<>" %%G In ('%SystemRoot%System32wbemWMIC.exe
Printer Where "Name Is Not Null And PortName Is Not Null" Get Name^, PortName
/Format:RawXML 2^>NUL ^| %SystemRoot%System32findstr.exe
/NRX "<VALUE>[^<][^<]*</VALUE>"') Do (If Not Defined i Echo Name: PortName
Set /A "i=%%G" 2>NUL & SetLocal EnabledelayedExpansion
For /F %%I In ('Set /A !i! %% 2') Do (EndLocal
If %%I Equ 0 (Set /P "=: %%H, " 0<NUL) Else Set /P "=%%H" 0<NUL))
Echo(&Pause

最新更新