2011hnfeng 发表于 2012-4-9 16:48:49

带进度条的自动运行系统补丁包程序的批处理[20120416更新]

刚刚完成的“带总进度条的自动运行系统补丁包程序的批处理”,分享出来吧,大侠们别笑话。
功能:自动判断当前系统,并逐个运行当前文件夹里面的系统补丁包程序。
有实际运行和演示模式。

20120416 精简了代码,修正了一些小bug,增强兼容性。去掉了演示模式。
把进度条用线封闭起来(没有重新抓图,请看 6楼的图)

一楼的代码已经更新,是可以用于实际应用的进度条批处理。7楼的代码只是演示。

如果没什么意外,就不再更新了。有兴趣的朋友拿去吧。

对于 Office 2003/2007/2010,请参见 30楼

重新写了代码,把进度条更精细一些的演示,请看 7楼。

@echo off
:: hnfeng 20120416
:: ◆自动运行文件夹里面所有系统补丁程序并显示总进度及正在安装的程序名◆
:: ================================
cd /d "%~dp0"&color 3E&mode con lines=15 &title 补丁包批处理安装程序〔hnfeng〕
ver | find "6.1" > NUL && (set XT=Windows7&set CX=Windows6.1-KB*.msu&set CS=/quiet /norestart&goto TOP)
ver | find "5.1" > NUL && (set XT=WindowsXP&set CX=WindowsXP-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "5.0" > NUL && (set XT=Windows2000&set CX=Windows2000-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "5.2" > NUL && (set XT=Windows2003&set CX=WindowsServer2003-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "6.0" > NUL && (set XT=WindowsVista&set CX=Windows6.0-KB*.msu&set CS=/quiet /norestart&goto TOP)
:: ================================
:TOP
set title=%XT% 补丁包批处理安装程序〔hnfeng〕
title %title%
set work=0&set n=0&set mo=0&set number=0&set hotfix=
if not exist %CX% echo.&echo.&echo 没找到补丁程序,按任意键退出 ...&echo.&echo.&echo    (该批处理应该在系统补丁程序所在文件夹里运行.)&pause>nul&exit
set k=▏&set kn=0
:Kong
if %kn% LSS 33 (set k=%k% &set /a kn=%kn%+1&goto Kong)
for /F %%s in ('dir /b /a-d %CX% ^| find /v /c ""') do set all=%%s
for /F %%i in ('dir /b /a-d /OD %CX%') do (set hotfix=%%i&call :show)
set hotfix=&call :show
goto end

:show
:check
if %number% GTR %mo% set num=%num%█&set /a mo=%mo%+1&set k=%k:~0,-1%&goto check

cls&echo.&echo.
if "%hotfix%"=="" (echo   %title% ) else (echo       正在安装:%hotfix% ...)
echo                                                            进度: %n% / %all%
echo.&echo                                 已经完成 %work% %%%
echo   ┌──────────────────────────────────┐
echo   │%num%%k%│&echo   │%num%%k%│&echo   │%num%%k%│
echo   └──────────────────────────────────┘
echo.
if not "%hotfix%"=="" echohnfeng.2012.4
if %work%==100 goto :EOF
::ping 127.1 -n 2 >nul
%hotfix% %CS%
set /a n=%n%+1
set /a work=(%n%)*100/(%all%)
set /a number=%work%/3
set /a number=%number%+1
goto :EOF

:end
echo       运行完成,请按任意键退出... (建议重新启动系统)
pause>nul&exit


因为上面的批处理需要找到与当前系统相对应的补丁程序后才运行,如果你手里暂时没有补丁程序,可以创建一些虚假的补丁程序:

对于Win7, 创建30个文件:for /L %%i in (10,1,30) do cd.>Windows6.1-KB610%%i.msu
pause
对于XP, 创建30个文件:for /L %%i in (10,1,30) do cd.>WindowsXP-KB510%%i.exe
pause

然后把批处理里面的
::ping 127.1 -n 2 >nul
%hotfix% %CS%
改为
ping 127.1 -n 2 >nul
::%hotfix% %CS%

运行就能看到进度条。





[ 本帖最后由 2011hnfeng 于 2012-4-18 18:24 编辑 ]

shan 发表于 2012-4-9 20:00:15

高人啊,很醒目的,很不错的

renchmin 发表于 2012-4-9 22:33:52

确实是很不错的批处理啊支持了

singel 发表于 2012-4-9 23:24:56

很不错,支持楼主

xiaoy 发表于 2012-4-10 20:05:26

真的很不错,收藏了

2011hnfeng 发表于 2012-4-11 16:39:27

稍稍加几行,可以把进度条用线封闭起来(仅选了几张截图做的)

貌似没几个人对进度条有兴趣。

[ 本帖最后由 2011hnfeng 于 2012-4-11 16:45 编辑 ]

2011hnfeng 发表于 2012-4-13 14:46:43

重新写了代码,进度条更精细了。

修改一下就可以用于实际应用中。**** Hidden Message *****下面是进度条效果

[ 本帖最后由 2011hnfeng 于 2012-5-7 14:52 编辑 ]

whsand 发表于 2012-4-13 15:49:22

不错,不错。good

527104427 发表于 2012-4-13 20:38:00

太厉害了```````````

2010我你928 发表于 2012-4-14 12:12:41

高手 支持是必须的 呵呵

微笑嘻嘻 发表于 2012-4-15 10:36:52

很不错,支持楼主aa

807979023 发表于 2012-4-15 10:51:46

很不错,支持楼主

chenshipeng 发表于 2012-4-16 22:16:43

很久没看到这么好的代码了

freesoft00 发表于 2012-4-16 22:38:07

看着不错的。不知道一楼的代码是不是最新的

xirch 发表于 2012-4-16 23:08:06

谢谢楼主分享!!!!!!!

xiaoj1972 发表于 2012-4-16 23:21:35

这个太好了   谢谢

holucan 发表于 2012-4-16 23:35:03

嘿嘿,进度条,我是看到这个进来的:P
wow,看了一下,这批处理真的挺炫的,未来使用在补丁包运行时冗长的时间里就不会有无聊的感觉了!

另外,不晓得第一楼批处理有更新否?
good job

[ 本帖最后由 holucan 于 2012-4-16 23:51 编辑 ]

lovecoldrain 发表于 2012-4-17 00:18:10

这个肯定很强悍啊……看看

2011hnfeng 发表于 2012-4-17 08:24:23

原帖由 freesoft00 于 2012-4-16 22:38 发表 http://bbs.wuyou.net/images/common/back.gif
看着不错的。不知道一楼的代码是不是最新的

一楼的代码已经更新,是可以用于实际应用的进度条批处理。7楼的代码只是演示。

2011hnfeng 发表于 2012-4-17 08:24:50

原帖由 holucan 于 2012-4-16 23:35 发表 http://bbs.wuyou.net/images/common/back.gif
嘿嘿,进度条,我是看到这个进来的:P
wow,看了一下,这批处理真的挺炫的,未来使用在补丁包运行时冗长的时间里就不会有无聊的感觉了!

另外,不晓得第一楼批处理有更新否?
good job

一楼的代码已经更新,是可以用于实际应用的进度条批处理。7楼的代码只是演示。

ymmlqm 发表于 2012-4-17 09:19:26

好久没有下载补丁下来再更新了,看看楼主处理的怎么样?

dpxqs 发表于 2012-4-17 10:20:37

高手 支持是必须的 呵呵

zhujiangnan 发表于 2012-4-17 10:53:25

不错,打补丁方便了!

dony2006 发表于 2012-4-17 11:07:50

支持是必须的 ,打补丁方便了!

huhong 发表于 2012-4-17 21:39:45

回复 #7 2011hnfeng 的帖子

看看。。。。。是撒子效果

holucan 发表于 2012-4-18 00:00:31

原帖由 2011hnfeng 于 2012-4-17 08:24 发表 http://bbs.wuyou.net/images/common/back.gif


一楼的代码已经更新,是可以用于实际应用的进度条批处理。7楼的代码只是演示。
呵呵,感谢更新,而且还加上了测试用的批处理 ;)

chenshipeng 发表于 2012-4-18 00:17:11

再跟贴求一段打Office补丁的进度条代码

ggmm888 发表于 2012-4-18 07:41:34

看图效果好不好大力支持

2011hnfeng 发表于 2012-4-18 18:21:30

原帖由 chenshipeng 于 2012-4-18 00:17 发表 http://bbs.wuyou.net/images/common/back.gif
再跟贴求一段打Office补丁的进度条代码

只需把这几行删掉
ver | find "6.1" > NUL && (set XT=Windows7&set CX=Windows6.1-KB*.msu&set CS=/quiet /norestart&goto TOP)
ver | find "5.1" > NUL && (set XT=WindowsXP&set CX=WindowsXP-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "5.0" > NUL && (set XT=Windows2000&set CX=Windows2000-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "5.2" > NUL && (set XT=Windows2003&set CX=WindowsServer2003-KB*.exe&set CS=/quiet /norestart /nobackup&goto TOP)
ver | find "6.0" > NUL && (set XT=WindowsVista&set CX=Windows6.0-KB*.msu&set CS=/quiet /norestart&goto TOP)

然后在此处增加下面内容:
set XT=Office2007_2010
set CX=*.exe
set CS=/quiet /norestart

如果是 Office2003,就这样:
set XT=Office2003
set CX=*.exe
set CS=/q

因为Office 2003、2007、2010可以同时存在,所以根据不同情况处理吧。

wan6376 发表于 2012-4-18 23:41:00

很好的批处理,支持楼主
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 带进度条的自动运行系统补丁包程序的批处理[20120416更新]