放在补丁目录下运行,可以自动判断已安装的补丁并跳过(不用生成临时文件,跳过的速度比用findstr查找临时列表的速度快多了),其他请看文件说明
麻烦会查找其他补丁安装后注册位置的DX提个醒
请自行将{TAB}改为制表符(键盘TAB键)
[ Last edited by zh159 on 2007-12-7 at 12:36 AM ]
麻烦会查找其他补丁安装后注册位置的DX提个醒
请自行将{TAB}改为制表符(键盘TAB键)
::XP 补丁自动安装 - code zh159@bbs.cn-dos.net 2007-12-6
::本 XP 补丁安装目前只能自动安装 /q /z /o 参数,
::并在 注册的 XP 补丁,
::其余的自行修改。【XP 补丁文件名称为下载的原始名称】
@echo off
title XP 补丁安装
echo.
echo. 获取系统已安装补丁列表,请稍等. . .
echo.
for /f "tokens=7 delims=\" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\windows nt\Currentversion\Hotfix"^|findstr /i "kb"') do (
set "str=%%i"
call set "☉%%str:~0,8%%= "
set /a Num+=1
call set/p= 系统已安装 %%Num%% 个补丁。<nul
set /p=<nul
)
echo.&echo.
set Num=0
for /f "delims=" %%i in ('dir/b/on *KB*.exe 2^>nul') do (
for /f "tokens=2 delims=-" %%n in ("%%i") do set "⊕%%n=%%i"
set /a Num+=1
call set/p= 当前目录下有 %%Num%% 个补丁。<nul
set /p=<nul
)
if %Num% == 0 echo. 当前目录没有 XP 补丁文件!请按任意键退出程序。&pause>nul&exit
echo.&echo.
set Num=0
echo. 是否开始装补丁?
set /p YN= (直接回车开始安装/显示系统已安装补丁列表/退出):
if /i "%YN%" == "X" exit
if /i "%YN%" == "L" (
echo.
for /f "delims=☉=" %%i in ('set ☉') do (
set /a Num+=1
call set "List= %%Num%%. "
call set "List=%%List:~-6%%"
call set/p=%%List%%%%i{TAB}<nul
)
echo.&echo.&echo. 请按任意键继续安装补丁. . .&pause>nul
)
echo.
echo. 开始安装补丁. . .
echo.
set Num=0
set New=0
for /f "tokens=1,2* delims=⊕=" %%n in ('set ⊕') do (
set /a Num+=1
if defined ☉%%n (
call echo. %%Num%%.{TAB}%%o 补丁已安装。
) else (
set /a New+=1
call echo. %%Num%%.{TAB}%%o 补丁开始安装,请稍等. . .
call %%o /q /z /o
)
)
echo.
echo 补丁安装完毕,本次安装新补丁 %New% 个!
pause>nul
exit
[ Last edited by zh159 on 2007-12-7 at 12:36 AM ]
本帖最近评分记录
(共 1 条)
点击查看详情
| 评分人 | 分数 | 时间 |
|---|---|---|
| lijinan | +2 | 2010-06-19 18:14 |



