Board logo

标题: 系统补丁升级 [打印本页]

作者: 3932575     时间: 2007-4-24 05:10    标题: 系统补丁升级
系统补丁升级的批处理不知有没人去试试?

内网中拿一台作服务器,给所有网网升级,且自动(或开机时)升级,可以自动判别是否升级过的程,要是升级过的就不运行,要是没升级过的就运行,每运行一个升级
程序就记录该文件名到指定文件中.......

OK?

作者: junzai     时间: 2007-4-30 01:29
@echo off
rem XJNU WINDOWS UPDATE SERVICES




rem History
echo For Windows 2000,Windows XP,Windows 2003 only.
echo 只在Windows 2000,Windows XP,Windows 2003 上适用
echo For Normal user only (computer that runs every day)
set Server=0
rem Server=1
pause
cls

rem 创建临时文件夹
set mhnet=%temp%\mhnet
rmdir /S /Q %mhnet% 2>NUL 1>NUL
mkdir %mhnet%

rem 系统语言环境判断
reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language >%mhnet%\Language.log
find "Default" %mhnet%\Language.log |find "0804" >NUL
IF NOT ERRORLEVEL 1 (
set Language=Chinese
) else (
set Language=English
)

if %Language%==Chinese (
echo 本程序专为设置新疆师范大学的Windows Automatic Updates 服务
) else (
echo This will setup XJNU Windows Automatic Updates Services
)

start readme.txt

rem 检查配套文件完整性
call :AllFiles

rem 检查属于NT系列
call :CheckSystem

rem 检查拥有管理员权限
call :CheckAdmin

rem 检查Automatic Updates服务是否正常安装
call :CheckService

call :SCAURegImport


if %Language%==Chinese (
echo 欢迎使用
echo 程序结束
) else (
echo We welcome you
echo Program Exit
)

pause
set mhnet=
set patchfile=
set downloadurl=
goto :eof
exit
:ends
rem 主函数结束




rem *************************
rem *************************
rem 导入:SCAURegImport
rem *************************
rem *************************
:SCAURegImport
ECHO 备份注册表(Backup Reg) %temp%
pushd %temp%
set BakFile1=AutoUpdateBak1.reg
set BakFile2=AutoUpdateBak2.reg
if exist %BakFile1% (
ECHO 已经安装了本补丁,按任意键删除原有备份
PAUSE
delete %BakFile1% /f /q >NUL 2>NUL
delete %BakFile2% /f /q >NUL 2>NUL
)
popd

pushd %mhnet%
reg EXPORT "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" %BakFile1% 1>NUL
reg EXPORT "HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate" %BakFile2% 1>NUL
move %BakFile1% %temp% >NUL
move %BakFile2% %temp% >NUL
set BakFile1=
set BakFile2=
popd

ECHO 正在停止WindowsUpdate服务(Stopping Update service)......
net stop wuauserv >NUL 2>NUL

ECHO 正在修改注册表操作(Modifying Registry)......
ECHO Y |reg DELETE "HKLM\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /va /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUServer /t REG_SZ /d "http://wsus.xjnu.edu.cn" /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate /v WUStatusServer /t REG_SZ /d "http://wsus.xjnu.edu.cn" /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoRebootWithLoggedOnUsers /t REG_DWORD /d 1 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v NoAutoUpdate /t REG_DWORD /d 0 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v RescheduleWaitTime /t REG_DWORD /d 1 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v ScheduledInstallDay /t REG_DWORD /d 0 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v UseWUServer /t REG_DWORD /d 1 /f >NUL



if %Server%==1 (
ECHO Automatic Updates Service installed for server
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v AUOptions /t REG_DWORD /d 4 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v ScheduledInstallTime /t REG_DWORD /d 11 /f >NUL
) else (
ECHO Automatic Updates Service installed for non-server
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v AUOptions /t REG_DWORD /d 2 /f >NUL
reg add HKLM\Software\Policies\Microsoft\Windows\WindowsUpdate\AU /v ScheduledInstallTime /t REG_DWORD /d 12 /f >NUL
)

rem 服务自动启动
ECHO 设置服务为自动启动(Set service to automatic start)
reg add HKLM\SYSTEM\CurrentControlSet\Services\wuauserv /v Start /t REG_DWORD /d 2 /f >NUL
reg add HKLM\SYSTEM\CurrentControlSet\Services\BITS /v Start /t REG_DWORD /d 2 /f >NUL

ECHO 正在重新启动WindowsUpdate服务(Starting Update Service)......
net start bits >NUL 2>NUL
net start wuauserv >NUL 2>NUL

goto :eof







rem *************************
rem *************************
rem 停止/删除服务函数
rem *************************
rem *************************
:StopService
set SrvName=%1
net stop %SrvName% >NUL >NUL2
reg query HKLM\SYSTEM\CurrentControlSet\Services\\%SrvName% >NUL
if not errorlevel 1 (
reg delete HKLM\SYSTEM\CurrentControlSet\Services\\%SrvName% /f >NUL
) ELSE (
if %Language%==Chinese (
echo 系统服务: %SrvName% *没找到*
) else (
echo System Service: %SrvName% Not Found
)
)
goto :eof






rem *************************
rem *************************
rem 判断是否NT系列系统,win9x系统则退出
rem *************************
rem *************************
:CheckSystem
if NOT %OS%==Windows_NT (
if %Language%==Chinese (
echo 本程序专为中文/英文版本的Win2000,WinXP,Win2003设计
echo Windows 95, Windows 98, Windows ME的用户不必运行
echo 程序退出。
) else (
echo Design for Win2k,WinXP,Win2003 with Chinese or English version only.
echo Windows 95,Windows 98, Windows ME will not be troubled by this bug.
echo Thank you for checking. Please deliver this to someone who need it.
)
pause
exit
) else (
if %Language%==Chinese (
echo 用户使用基于WindowsNT内核的系统,
) else (
echo You are using a system based on WindowsNT kernel,
)
)
goto :eof



rem *************************
rem *************************
rem 判断是否NT系列系统,win9x系统则退出
rem *************************
rem *************************
:CheckAdmin
net user "%username%" 1> %mhnet%\ifadmin.log
rem 如果不是系统管理员
find "*Administrators " %mhnet%\ifadmin.log >NUL
IF ERRORLEVEL 1 (
if %Language%==Chinese (
echo 用户不是系统管理员组成员 ,不能执行相应程序
echo 请更换有足够权限的用户重新运行本程序
) else (
echo This program require administrator right to continue
echo Please switch user and try again
)
pause
exit
goto :eof
) else (
if %Language%==Chinese (
echo 用户属于系统管理员组,
) else (
echo You have got the right of administrator,
)
)
goto :eof






rem *************************
rem *************************
rem 先进行补丁检查,没有安装补丁的机器先安装补丁,重启动后再查杀病毒
rem *************************
rem *************************
:CheckService
rem if %Language%==Chinese (
rem echo 检查 Automatic Updates
rem ) else (
rem echo Checking Automatic Updates Service
rem )
rem 检查服务的注册表值

reg query "HKLM\SYSTEM\CurrentControlSet\Services" >%mhnet%\Services.log
find "wuauserv" %mhnet%\Services.log >NUL

IF ERRORLEVEL 1 (
rem 您的计算机未安装Automatic updates服务
call :InstallService
pause
exit
rem 中止执行
) ELSE (
rem if %Language%==Chinese (
rem echo 注册表检查显示您的系统已经安装了wuauserv服务。
rem ) else (
rem echo reg reports that your system has wuauserv service installed
rem )
)
goto :eof







rem *************************
rem *************************
rem 清空注册表某\Run值
rem *************************
rem *************************
:CleanRun
reg delete HKLM\Software\Microsoft\Windows\CurrentVersion\Run\\%1 /f >NUL
goto :eof








rem *************************
rem *************************
rem 停止不安全服务
rem *************************
rem *************************
:StopUnSafeSrv
rem net stop %1 >NUL
reg add HKLM\SYSTEM\CurrentControlSet\Services\\%1 /v Start /t REG_DWORD /d 0x3 /f >NUL
goto :eof








rem *************************
rem *************************
rem 导入正常注册表的execute文件关联
rem *************************
rem *************************
:Regdefault
reg import regdefault.reg >NUL
goto :eof




rem *************************
rem *************************
rem 安装wuauserv包
rem *************************
rem *************************
:InstallService
rem reg query HKLM\SYSTEM\CurrentControlSet\Control\Nls\Language >%mhnet%\Language.log

rem 中文系统
find "InstallLanguage" %mhnet%\Language.log |find "0804" >NUL
IF NOT ERRORLEVEL 1 (CALL :CNService )

rem 英文系统
find "InstallLanguage" %mhnet%\Language.log |find "0409" >NUL
IF NOT ERRORLEVEL 1 (CALL :ENService )

rem 其他语言包,以上语言包虽用call调用,但不希望返回
if %Language%==Chinese (
echo 你并未使用中文/英文操作系统,
echo 请记下下面显示的InstallLanguage及Default的值,请到微软网站下载相应服务
echo 程序退出
) else (
echo You are not using windows with Chinese/English language
echo We suggest you download the service from microsoft website.
echo Please write down the InstallLanguage & Default value for later use.
echo program terminated
)
find "InstallLanguage" %mhnet%\Languate.log
start http://www.microsoft.com/downloads/details.aspx?FamilyID=799432fb-c196-4f01-8cce-4f9ea58d6177&DisplayLang=en
rem 微软服务安装网页
pause
exit
goto :eof







rem *************************
rem *************************
rem 中文服务包下载安装
rem *************************
rem *************************
:CNService
set patchfile=WUAU22CHS.msi
set downloadurl=http://wsus.xjnu.edu.cn/wsus/%patchfile%
call :Download
start %mhnet%\%patchfile%
if %Language%==Chinese (
echo 安装好服务后重启电脑,再运行本程序
) else (
echo Restart your computer when Service installation is done. And run again.
)
pause
exit
goto :eof








rem *************************
rem *************************
rem 英文服务包下载安装
rem *************************
rem *************************
:ENService
set patchfile=WUAU22ENU.msi
set downloadurl=http://wsus.xjnu.edu.cn/wsus/%patchfile%
call :Download
start %mhnet%\%patchfile%
if %Language%==Chinese (
echo 安装好服务后重启电脑,再运行本程序
) else (
echo Restart your computer when Service installation is done. And run again.
)
pause
exit
goto :eof









rem *************************
rem *************************
rem 检查部分文件完整性
rem *************************
rem *************************
:AllFiles
if not exist reg.exe (
echo reg.exe NOT FOUND
pause
exit
) else (
copy reg.exe %mhnet% /y >NUL
)

if not exist wget.exe (
echo wget.exe NOT FOUND
pause
exit
) else (
copy wget.exe %mhnet% /y >NUL
)
goto :eof





rem *************************
rem *************************
rem 下载补丁,用%patchfile%传入文件名
rem *************************
rem *************************
:Download
if %Language%==Chinese (
echo 自动下载 %downloadurl%
) else (
echo Downloading %downloadurl%
)
pushd %mhnet%
if exist %patchfile% (
del %patchfile% /f /q >NUL 2>NUL
)
wget %downloadurl%
IF NOT ERRORLEVEL 1 (
if %Language%==Chinese (
echo 下载成功。
) else (
echo Download Success
)
) else (
if %Language%==Chinese (
echo 下载失败。程序退出
) else (
echo Download Failed. Terminated
)
pause
exit
)
popd
goto :eof



rem ----- this is the end of this batch file -------

作者: bingxiao20     时间: 2007-4-30 02:27
好厉害。。我等下去下载来看看。。

作者: huyingbin     时间: 2007-5-29 11:06
厉害

作者: limouse01     时间: 2007-12-3 09:03
我下来研究研究

作者: 5872169     时间: 2008-3-7 17:37
厉害,太费功夫了!