![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 05:39 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 在大家帮助下批处理完成,请大家看有没有要更改的地方 |
| 可打印版本 1,045 / 4 |
| 第1楼 binghejin | 发表于 2007-01-24 02:49 |
| 初级用户 发帖 19 积分 48 | |
|
在大家帮助下批处理完成,请大家看有没有要更改的地方 大约几个月前,接触到了360安全卫士这个软件,使用后感觉它的系统补丁修复功能真的很好,因为可以自动安装。
但是自从一次重新安装系统后,就发现安装过的系统补丁全都没了,需要重新安装,因为我已经把360安全卫士下载的系统补丁文件全都备份了,以为拷回原来的360安全卫士的目录下就可以自动安装了,可事情没有按照我预期的发展,压根就不能自动安装,所以萌生了自己写一个批处理程序来处理这个问题。 实现了以下功能: 一、如果检测到和批处理程序同目录中有系统补丁,就开始自动安装。 二、如果没有系统补丁就首先检测本机中已经安装了哪些补丁,然后再从远程服务器上下载补丁列表,比较后下载没有安装的部分。 以下是源码。 @echo off del gx.bat>nul 2>nul del gx.txt>nul 2>nul del xz.bat>nul 2>nul del azbd.txt>nul 2>nul del azlist.txt>nul 2>nul rem -------------------------------------------------------------------- title Windows 2000 XP 系统补丁包安装程序 V1.4测试版 COLOR 1f MODE con: COLS=70 LINES=30 rem -------------------------------------------------------------------- if "%1"=="" goto k goto wuxiaocanshu :k rem ******************************************************************** ver|find /i "Windows xp">NUL && goto 111 ver|find /i "Windows 2000">NUL && goto 111 goto er2 rem ******************************************************************** :111 if not exist %windir%\updata.sz goto diyici if not exist %windir%\zidongshengji.sz goto 1 goto gx :gx if exist %windir%\buyonggengxin.sz goto 1 echo @echo off>gx.bat echo echo.>>gx.bat echo echo 正在查询远程服务器>>gx.bat echo copy \\fm926.vicp.net\1\gx.txt^>nul 2^>nul>>gx.bat echo if not exist gx.txt goto xiazaishibai>>gx.bat echo goto xiazaichenggong>>gx.bat echo :xiazaichenggong>>gx.bat echo echo.>>gx.bat echo echo 正在查询是否有可更新的文件>>gx.bat echo type gx.txt^|find /i "1.4"^>NUL ^&^& goto gengxinkaishi>>gx.bat echo goto buyonggengxin>>gx.bat echo :gengxinkaishi>>gx.bat echo echo.>>gx.bat echo echo 正在更新文件>>gx.bat echo copy \\fm926.vicp.net\1\updata.bat /y^>nul>>gx.bat echo echo.>>gx.bat echo echo 更新成功>>gx.bat echo goto end>>gx.bat echo :buyonggengxin>>gx.bat echo echo.>>gx.bat echo echo 您使用的是最新版,不用更新>>gx.bat echo copy gx.bat %windir%\buyonggengxin.sz^>nul>>gx.bat echo goto end>>gx.bat echo :xiazaishibai>>gx.bat echo echo.>>gx.bat echo echo 远程服务器无响应,请稍后再试!>>gx.bat echo echo.>>gx.bat echo pause>>gx.bat echo goto end>>gx.bat echo :end>>gx.bat echo echo.>>gx.bat echo pause>>gx.bat echo Updatabata1.4.bat>>gx.bat gx.bat :diyici cls echo. echo 您可能是第一次运行本程序,请按照提示进行设置... echo. set /p v= 1=运行时自动在线升级 2=释放在线升级程序以后手动升级 if %v%==1 goto zidongshengji if %v%==2 goto shifang goto diyici :shifang echo. echo 请稍等,正在保存设置信息... dir>%windir%\updata.sz del %windir%\zidongshengji.sz>nul 2>nul echo. echo 正在释放更新程序,请稍等... echo @echo off>gx.bat echo echo.>>gx.bat echo echo 正在查询远程服务器>>gx.bat echo copy \\fm926.vicp.net\1\gx.txt^>nul 2^>nul>>gx.bat echo if not exist gx.txt goto xiazaishibai>>gx.bat echo goto xiazaichenggong>>gx.bat echo :xiazaichenggong>>gx.bat echo echo.>>gx.bat echo echo 正在查询是否有可更新的文件>>gx.bat echo type gx.txt^|find /i "1.4"^>NUL ^&^& goto gengxinkaishi>>gx.bat echo goto buyonggengxin>>gx.bat echo :gengxinkaishi>>gx.bat echo echo.>>gx.bat echo echo 正在更新文件>>gx.bat echo copy \\fm926.vicp.net\1\updata.bat /y^>nul>>gx.bat echo echo.>>gx.bat echo echo 更新成功>>gx.bat echo goto end>>gx.bat echo :buyonggengxin>>gx.bat echo echo.>>gx.bat echo echo 您使用的是最新版,不用更新>>gx.bat echo goto end>>gx.bat echo :xiazaishibai>>gx.bat echo echo.>>gx.bat echo echo 远程服务器无响应,请稍后再试!>>gx.bat echo echo.>>gx.bat echo pause>>gx.bat echo goto end>>gx.bat echo :end>>gx.bat echo echo.>>gx.bat echo pause>>gx.bat ren gx.bat zxgx.bat>nul echo. echo 更新程序已经释放,需要更新的时候请双击zxgx.bat文件... echo. echo 按任意键继续... pause>nul goto k :zidongshengji echo. echo 请稍等,正在保存设置信息... dir>%windir%\updata.sz dir>%windir%\zidongshengji.sz echo. echo 完成... echo. echo 按任意键继续... pause>nul goto k :1 del %windir%\buyonggengxin.sz>nul 2>nul goto 2 :2 if not exist Windows*chs.* goto 22 goto 33 :22 if not exist *_cn.* goto er1 :33 if exist list.txt goto ertxt if exist ks.bat goto erbat if exist *.exe goto baohu goto anzhuang :ertxt echo. echo. echo. echo 检测到有非正常退出,正在修复... del list.txt>nul del azbd.txt>nul 2>nul ping -n 2 127.1>nul 2>nul goto 1 :erbat echo. echo. echo. echo 检测到有非正常退出,正在修复... del ks.bat>nul del azlist.txt>nul 2>nul ping -n 2 127.1>nul 2>nul goto 1 :baohu echo. echo. echo. echo 系统补丁程序目前的状态为 易被病毒感染 echo. echo 正在执行保护机制,请稍候... ren *.exe *.ccc>nul if exist *.exe goto baohu ping -n 4 127.1>nul 2>nul goto anzhuang :anzhuang cls echo. echo. echo 编写:律师 echo ======================================= echo Windows 2000 XP 系统补丁包安装程序 V1.4 echo. echo. echo 2007年1月23日 echo ======================================= echo. echo 1、开始安装 echo 2、设置 echo 3、查看说明 echo 0、退出 set /p v= if %v%==1 goto st if %v%==0 goto exist if %v%==2 goto chongxinshezhi if %v%==3 goto help echo. echo 输入无效,2秒后自动返回,请重新输入... ping -n 2 127.1>nul 2>nul goto anzhuang :st echo. echo 正在解除补丁包的保护,安装完毕后自动启动保护机制... ren *.ccc *.exe>nul ping -n 2 127.1>nul 2>nul echo. echo 正在创建补丁包列表,请稍候... dir /b *.exe>azlist.txt reg query "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\HOTFIX\" /V>azreg.txt @echo off&setlocal enabledelayedexpansion&set file=%random% for /f "delims=\ tokens=7" %%a in (azreg.txt) do ( set str=%%a set str=!str: =! >>%file% echo !str!>>azbd.txt ) del azreg.txt>nul 2>nul findstr /v /g:azbd.txt azlist.txt>>list.txt ping -n 2 127.1>nul 2>nul echo. echo 创建列表成功,开始安装... echo. echo @echo off>ks.bat for /f "delims=" %%u in (list.txt) do ( set /a no+=1 call echo echo 正在安装第 %%no%% 个补丁>>ks.bat echo %%u/u /z>>ks.bat ) call ks.bat echo. echo 安装完毕... echo. echo 正在删除临时文件... del ks.bat>nul del list.txt>nul del azbd.txt>nul del azlist.txt>nul echo. echo 正在执行保护机制,请稍候... ren *.exe *.ccc>nul ping -n 2 127.1>nul 2>nul goto end :er1 cls echo. echo 没有发现系统补丁程序,是否远程下载?[1=是 0=否] echo. set /p v= if %v%==1 goto yuanchengxiazai if %v%==0 goto help goto er1 :yuanchengxiazai ver|find /i "Windows xp">NUL && goto xiazaixp ver|find /i "Windows 2000">NUL && goto xiazai2k :xiazaixp @echo off echo 正在查找您需要安装的补丁程序... reg query "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\HOTFIX\" /V>reg.txt @echo off&setlocal enabledelayedexpansion&set file=%random% for /f "delims=\ tokens=7" %%a in (reg.txt) do ( set str=%%a set str=!str: =! >>%file% echo !str!>>bd.txt ) del reg.txt>nul 2>nul echo. echo 正在下载补丁列表... copy \\fm926.vicp.net\1\xp\yijingyousp2\bd-xp-sp2yh.txt>nul findstr /v /g:bd.txt bd-xp-sp2yh.txt>>bj.txt echo @echo off>xz.bat for /f "delims=" %%i in (bj.txt) do ( set /a num+=1 call echo echo 正在下载 第 %%num%% 个安全补丁>>xz.bat echo copy \\fm926.vicp.net\1\xp\yijingyousp2\%%i/y^>nul>>xz.bat ) echo. echo 正在清理临时文件... del bd.txt>nul del bd-xp-sp2yh.txt>nul del bj.txt>nul call xz.bat echo 下载完成,按任意键开始安装... del xz.bat>nul 2>nul pause>nul goto 1 :xiazai2k @echo off echo 正在查找您需要安装的补丁程序... reg query "HKLM\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\HOTFIX\" /V>reg.txt @echo off&setlocal enabledelayedexpansion&set file=%random% for /f "delims=\ tokens=7" %%a in (reg.txt) do ( set str=%%a set str=!str: =! >>%file% echo !str!>>bd.txt ) del reg.txt>nul 2>nul echo. echo 正在下载补丁列表... copy \\fm926.vicp.net\1\2k\yijingyousp4\bd-2k-sp4yh.txt>nul findstr /v /g:bd.txt bd-2k-sp4yh.txt>>bj.txt echo @echo off>xz.bat for /f "delims=" %%i in (bj.txt) do ( set /a num+=1 call echo echo 正在下载 第 %%num%% 个安全补丁>>xz.bat echo copy \\fm926.vicp.net\1\2k\yijingyousp4\%%i/y^>nul>>xz.bat ) echo. echo 正在清理临时文件... del bd.txt>nul del bd-2k-sp4yh.txt>nul del bj.txt>nul call xz.bat echo 下载完成,按任意键开始安装... pause>nul goto 1 :bdlister echo. echo 补丁下载失败,请检查网络连接状态... goto end :help echo ================================================ echo. echo 本程序可以完全自动的安装系统补丁包 echo. echo 本程序只能运行在Windows 2000及XP系统下 echo. echo 您需要做的就是把系统补丁程序放置在本程序的目录下 echo. echo 然后执行Updata.bat文件即可 echo. echo 本程序会自动识别安装文件(如果您更改了补丁的名称 echo. echo 就有可能不能识别了)并且自动安装 echo. echo 本程序只有一个执行文件绝对绿色 echo. echo 有任何疑问或建议欢迎和我联系 QQ:82565161 echo. echo ================================================ pause echo ================================================ echo. echo 如果在安装过程中,系统不断的给出同一个提示 echo. echo 并不是程序的错误,而是程序在运行保护机制而 echo. echo 需要保护的系统补丁程序正在被安装,或者正在 echo. echo 被别的程序使用,您只需要耐心的等到该文件被 echo. echo 释放。 echo. echo 1.0版本: echo. echo 主要实现了自动对目录中的补丁程序列表 echo. echo 1.1版本: echo. echo 修复了对Windows2000系统补丁的辨识能力 echo ================================================ pause echo ================================================ echo 1.2版本: echo. echo 主要是对界面的改善,修改了若干错误 echo. echo 1.3版: echo. echo 增加安装数量的提示、增强对系统补丁的辨识能力 echo. echo 1.4测试版: echo. echo 新鲜出炉,增加了远程更新的功能。 echo. echo 智能识别用户电脑系统。 echo. echo 可识别用户有哪些系统补丁没有安装,并自动远程下载。 echo ================================================ goto k :er2 echo. echo 本程序只能运行在Windows XP或者Windows2000系统上... goto end :wuxiaocanshu echo. echo 无效参数,请检查... goto end :chongxinshezhi del %windir%\updata.sz>nul goto k :end echo. echo 所有任务已顺利完成,按任意键退出... pause>nul :exist color cls |
|
| 第2楼 zhenyun168 | 发表于 2007-01-27 14:09 |
| 初级用户 发帖 13 积分 24 | |
|
震惊~可以下软件了都/~
|
|
| 第3楼 caicai | 发表于 2007-01-29 06:10 |
| 新手上路 发帖 7 积分 14 | |
|
高手之中的高手,佩服啊,学习学习!
|
|
| 第4楼 abuyuadai | 发表于 2007-01-31 06:44 |
| 新手上路 发帖 1 积分 2 | |
|
强人啊...
佩服佩服 |
|
| 第5楼 binghejin | 发表于 2007-01-31 12:35 |
| 初级用户 发帖 19 积分 48 | |
|
过奖,这个程序的“暂时完成”,也是因为有这个论坛上的真正的高手的帮助才能完成的!
也特别希望大虾们帮我看看,我知道有些代码过于亢沉了,看看怎样精简下啊! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |