CRM系统|加入收藏|小博客
18560384436
>> 返回 您当前所在位置:首页 >> 支持中心 >> 详细内容

批量无人安装系统补丁的批处理

更新时间:2014-07-22 10:16:28点击次数:3071次字号:T|T
以下批处理只对系统补丁有效,对office补丁无效我在大部分语句都加上了注释,如看到某个命令的参数不懂,可以运行cmd,输入那个命令,加上/?查看说明,如(for /?)。现在打补丁是我们需要经常进行的重要事情了,不过补丁多了也是个烦恼每次重装后都去下载来安装吗?麻烦;使用网上放出的补丁集?这次下载了某个补丁集,如果微软今天又发新补丁了,又去下载一个差不多100MB的庞大东西吗;于是我们平常就会下载了一大堆如Window...

以下批处理只对系统补丁有效,对office补丁无效

我在大部分语句都加上了注释,如看到某个命令的参数不懂,可以运行cmd,输入那个命令,加上/?查看说明,如(for /?)。
现在打补丁是我们需要经常进行的重要事情了,不过补丁多了也是个烦恼
每次重装后都去下载来安装吗?麻烦;
使用网上放出的补丁集?这次下载了某个补丁集,如果微软今天又发新补丁了,又去下载一个差不多100MB的庞大东西吗;
于是我们平常就会下载了一大堆如WindowsXP-KB873339-x86-CHS的补丁,但一个一个安装我死给你看好了-_-
使用一些自动打补丁的软件,如:金山漏洞修复?这个倒是可以,不过自己弄一个比较有成就感^_^


echo off
::关闭显示信息

del list.log /q
::删除上次运行后留下的文件

echo 正在检测已经的安装补丁

for /f “delims=- tokens=2″ %%i in ('dir *-kb*.exe /b /on') do REG QUERY “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix\%%i” >nul || dir /b *%%i*.exe >>list.log && cls && echo 正在检测已经的安装补丁
::从文件中取出一个补丁的名字,截取中间的补丁标号(如KB873339),到注册表查询这个是否已经安装了,没有就将其存放到list.log文件里

cls
::清屏

for /f “eol=o eol=O ” %%j in (list.log) do echo 正在安装补丁%%j  && %%j /quiet /norestart
::从list.log文件中取出一个补丁的名字,利用参数(/quiet /norestart)进行安装无人安装

cls

echo 安装了的补丁(list.log):& type list.log | more
::显示安装了的补丁的列表,more是用来防止补丁过多,分屏显示用的

pause
::暂停让别人看列表

del list1.log /q
::删除使用过的list1.log文件

将上面引用的内容复制到记事本里面,然后按另存为,文件类型选择所有文件,文件名为setup.cmd(使用cmd而不用bat是因为cmd对中文名以及长文件名的支持好,况且应该没有人用98而去打补丁吧);
最后将setup.cmd文件放到补丁的目录下,双击即可运行并批量安装补丁,而且可以跳过已经安装了的补丁;



注意:千万不要把补丁的文件名修改掉,要使用原来的文件名,如:WindowsXP-KB873339-x86-CHS