Board logo

标题: [系统相关] 批处理如何判断操作系统中是否安装了某一个补丁? [打印本页]

作者: zeng4310    时间: 2009-12-7 10:48     标题: 批处理如何判断操作系统中是否安装了某一个补丁?

我想实现一个这样的效果。
因为有个程序需要安装Windows Installer 3.1才能运行。一般很多人都是windows xp sp2(而且不爱打开自动更新),所以是没有这个补丁的。但是sp3、windows vista和7好像有。
其实我就达到的目的是,检测操作系统是否windows xp,是的话再检测系统是否安装了补丁“WindowsXP-KB942288-v3-x86.exe”(Windows Installer 4.5)。如果安装了就自动运行下一个程序(setupwin.exe)。如果不是的话就默认安装补丁“WindowsXP-KB942288-v3-x86.exe”,并不立即启动。
如果检测到是windows vista和7,那就自动运行(setupwin.exe)。

这个批处理应该如何写?
先使用ver命令判断是否是“Microsoft Windows [版本 5.*.***]”如果不是就自动运行(setupwin.exe)。
如果检测不是的话,就使用systeminfo察看是否安装补丁“KB942288”如果没有就自动安装WindowsXP-KB942288-v3-x86.exe。安装完后不立即重新启动再自动运行(setupwin.exe)。

各位达人,我只知道这些命令,但是不知道如何将这些写成批处理,加上判断。
麻烦达人帮我写下这出这个批处理。
作者: Batcher    时间: 2009-12-17 01:55

  1. @echo off
  2. (ver | findstr /c:"Microsoft Windows [Version 5.") && (systeminfo | findstr /i "KB942288" || WindowsXP-KB942288-v3-x86.exe /passive /norestart /nobackup)
  3. start setupwin.exe
复制代码

作者: 不知道是谁    时间: 2017-5-21 13:57

本帖最后由 不知道是谁 于 2017-5-21 13:59 编辑

回复 2# Batcher


    最近因为永恒之蓝漏洞,公司内部很多机器需要安装补丁,但有些电脑个人已经安装过这个补丁,所以就想找个检测已安装补丁的命令。
systeminfo是可以做到,但执行效率太低了,而且部分经过精简的XP系统没有这个命令,个人感觉用wmic qfe get hotfixid会更好些。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2