问:有什么方法可以只解析出 Windows systeminfo 命令报告中的修补程序 KB 条目。
背景:我有许多 Windows 系统需要从中获取已安装 KB 的列表。我无法在系统上安装任何软件,所以我决定使用批处理文件。
我想要一个 KB 列表作为输出,保存到文件“.txt”中
我当前的方法:到目前为止,我可以从 systeminfo 获取完整列表,并将整个输出放入以设备的主机名和日期命名的文本文件中,并将其粘贴到名为 Systeminfo Saves 的目录中。这对我来说效果很好,但我真的只对 KB 感兴趣,我希望使用该输出将其与经过验证的 KB 列表进行比较,以便获得需要安装的 KB 列表。
我一直在搞乱 for 语句、标记和分隔符,以将列表缩小到仅 KB 文件,但没有成功。
这是我当前的代码:
@echo off
REM Get date and host and set it to sFileName
REM -----------------------------------------
setlocal enabledelayedexpansion
set ssDate=%date%
set sHost=%computername%
set sDate=!ssDate:/=-!
REM Remove the day of the week
set sDate=%sDate:~-10%
set sFileName=%sHost% %sDate%.txt
REM -----------------------------------------
REM - Save system info to hostname and date -
REM -----------------------------------------
systeminfo > "Systeminfo Saves/%sFileName%"
REM
REM PUT FOR STATEMENT HERE FOR OUTPUT OF JUST KBs
REM -----------------------------------------
我无法完成的下一步是将已安装的 KB 解析为文件。
For 语句让我陷入了一个循环(双关语的意思是温和的)。我试过这个:
REM OUTPUT a list of KBs
SET count=1
set lookieloo = "]: KB"
FOR /F "tokens=* USEBACKQ" %%F IN (`systeminfo`) DO (
SET var!count!=%%F
SET /a count=!count!+1
REM See if "]: KB" is in the resultant string
if not x%%F:"]: KB"=%==x%%F echo %%F >> "Systeminfo Saves/%sFileName%"
)
我正在将我从其他部分回答我的问题的 Stack Overflow 答案中不完全理解的答案拼接在一起。
我敢肯定最后一次保存到文件是行不通的。“]:KB”根本不起作用。我尝试使用变量lookieloo 来使该语句起作用。我没有收到错误消息,但也没有收到 KB 列表。
所以,问题是:使用 systeminfo 命令导出系统上已安装 KB 的文本文件的批处理程序会是什么样子?