|
|
局域网所有客户端只要不定期执行本脚本即可升级补丁,也可以将本脚本添加到客户端的启动菜单自动执行
@echo off
::关闭显示信息
for /f "tokens=1 delims=" %%b in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CSDVersion"') do echo %%b >c:\ver.log
find /i "Service Pack 2" c:\ver.log >nul || echo =========================================================== 你的系统不是WINDOWS XP SP2版本,不能升级,按任意键退出 =========================================================== && pause && exit
IF NOT EXIST U: Net use U: \\155.72.24.254\Updates "82416561" /user:guest
cls
U:
IF EXIST C:\list.log del c:\list.log /q
IF EXIST C:\reg.log del c:\reg.log /q
::如果c盘有文件list.log和reg.log文件,则将其强行删除
for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates" /s ^| findstr /i "kb......$ q......$"') do echo %%~nxa >>c:\reg.log
::查询注册表,将已安装补丁保存为reg.log,供后面比对用。
echo --------------------------------------------------
echo 系统正在检测你已经安装的补丁,请稍候
echo ........
echo --------------------------------------------------
for /f "tokens=1,2* delims=- " %%i in ('dir /b /on *-*.exe') do (findstr /i "%%j" c:\reg.log >nul || echo %%i-%%j-%%k>>c:\list.log)
::提取补丁文件夹中补丁文件名(只提取中间补丁编号,如KB925938)并与从注册表查询已安装补丁的reg.txt文件作循环比较,将系统没有安装的补丁名存放到c:\list.log文件里
IF EXIST C:\list.log for /f "eol=o eol=O " %%j in (c:\list.log) do echo 正在安装补丁%%j && %%j /quiet /norestart
::从list.log文件中取出一个补丁的名字,利用参数(/quiet /norestart)进行安装无人安装
IF EXIST C:\list.log echo 你本次成功安装了以下补丁,详见C盘list.log文件 ..... & type c:\list.log
::显示安装了的补丁的列表,可以加 more参数,防止补丁过多,分屏显示
IF NOT EXIST C:\list.log echo 你的系统已经安装了所有补丁,请一周后再升级补丁 .....
::如果系统已经安装了所有补丁,就不会产生list.log文件,C盘当然也找不到list.log文件,就提示过段时间再升级
::echo off
qchain.exe
IF EXIST U: Net use U: /del /y >nul
echo --------------------------------------------------
echo 为了你电脑的安全,请不定期双击本文件升级补丁
echo 我一般会一周左右更新一次补丁,请按任意键退出
echo ....
echo ==================================================
pause
::暂停让别人看列表 |
|