今天看了一下,程序有两个BUG,一个是空目录,一个是WindowsXP-WindowsMedia-KB954155-x86-CHS.exe之类的补丁问题,修正程序如下:
#Include <File.au3>
Local Const $hklm="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\HotFix"
ToolTip(@CR&"正在安装系统补丁,请稍后!")
Local $i=1,$Exists
While 1
$Exists=RegEnumKey($hklm,$i) ;RegEnumKey读取指定子键的名称.
If @Error Then ExitLoop
$i+=1
WEnd
$i=1
Local $List=_FileListToArray(@ScriptDir&"\hotfix","*KB*.EXE",1) ;查找有KB的补丁文件,不是的不会加数组
If $list = "" Then ;判断是否空目录
msgbox(0,"提示","未找到补丁")
Exit
EndIf
While $i<=$List[0] ;该表达式的值为true(真)则重复执行循环体语句(以WEnd为结束标志),否则循环结束.
$FixName=StringSplit($List[$i],"-") ;StringSplit以指定分隔符把字符串拆分成若干子串.
$FixN=$FixName[2]
If StringLeft($FixN, 2) <> "KB" Then ;解决WindowsXP-WindowsMedia-KB954155-x86-CHS.exe之类的补丁的KB判断问题
$FixN=$FixName[3]
EndIf
If Not StringInStr($Exists,$FixN) Then
RunWait(@ScriptDir&"\hotfix\"&$List[$i]&" /quiet /passive /norestart")
EndIf
$i+=1
WEnd
msgbox(64,"ok","安装完毕") |