如何从 Windows 命令行输出中找到多个值?

如何从 Windows 命令行输出中找到多个值?

例如,查看 KB983590 是否已安装:

systeminfo | find "KB983590"

但是如果我想知道是否安装了多个 KB 该怎么办?

答案1

尝试这个:

systeminfo | findstr "KB"

您还可以使用 /i 进行不区分大小写的搜索。运行 findstr /? 可获得更多选项。

如果您只想搜索补丁的子集,请在条目之间使用空格:

systeminfo | findstr "KB958488 KB976902 KB976932"

答案2

您可以使用如下代码行:

FOR /F "usebackq tokens=5 delims= " %i IN (`netstat -ano ^|find "ESTABLISHED"`) DO @tasklist /fi "pid eq %i" | find "%i"

或者,更简短一些,这样做同样有效:

netstat -a -b -n -o | findstr ESTABLISHED || tasklist | findstr PID

答案3

我会选择“find”而不是“findstr”(更简单/更容易)

systeminfo | find /I "kb"

您将获得您的清单。

使用 for /f 可以更轻松地组织数据,例如

for /f "tokens=2* delims= " %F IN ('systeminfo ^| find /I "kb"') DO ECHO %F%G%H

这将删除每行开头的编号序列。

如果您只想要 KB#####,请将 tokens 值更改为 2(不带星号),并将结尾的 ECHO 更改为 ECHO %F

for /f "tokens=2* delims= " %F IN ('systeminfo ^| find /I "kb"') DO ECHO %F%G%H>>"%USERPROFILE%\desktop\systeminfo.txt"

会将其作为 .TXT 文件放到你的桌面上

当然如果你想要它在批处理文件中,请确保你的 %F 有一个额外的 % (%%F)

答案4

您还可以使用 && 连接多个命令

setlocal
set USERNAME=rbrown
net user %USERNAME% /domain | Find /i "Full Name" && net user %USERNAME% /domain | Find /i "Password expires"
endlocal

Full Name                    Richard Brown
Password expires             8/04/2021 9:32:54 am

相关内容