教学之友,学习之友。

站长教学网

深度分析Windows2003自动升级补丁功能(2)

时间:2012-04-10 12:47来源:未知 作者:ken 点击:

自动分清补丁的格式

  如何在批处理文件中区分这两类不同的补丁呢?最稳妥的办法是找一个小程序检测补丁文件资源信息,如果补丁资源中包括了一个标志压缩文件的可执行文件图标,那么该补丁就是第二类补丁,仅仅使用/Q参数,如果补丁资源中不包括图标,那么就是第一类补丁,可以使用/U /Q /Z参数来安装补丁。

  这里给出一个更简单的方法,仅仅使用Windows的内部命令,不需要额外程序了。查找补丁文件中的特征字符串,如果一个字符串仅仅在某一类补丁程序中存在,就可以根据这个来区分补丁的类型。
 

第一步:如图4,用文本编辑器分别打开WindowsServer2003-
  KB823559-x86-ENU.exe 文件和DirectX9-KB819696-x86-ENU.exe文件,可以找到很多特征字符串,如字符串“_SFX_CAB_EXE_PATH”仅仅存在于SFXCAB.EXE类型的补丁中,而字符串“CABINET”和“WEXTRACT”仅仅存在于WEXTRACT.EXE类型的补丁文件中。所以可以用查找字符串的方法来决定补丁文件的类型。
 

 

 

  第二步:在“开始→运行”菜单中输入“cmd”,然后进入补丁所在文件夹,运行如下命令,就可以指明该补丁文件需要的参数:

  (@findstr _SFX_CAB_EXE_PATH 补丁文件名字 >nul && @echo 参数 /U /Q /Z) || @echo 参数 /Q

  上面命令的意思是如果查找到字符串_SFX_CAB_EXE_PATH,就说明补丁使用 /U /Q /Z参数 ,否则使用/Q参数。

  第三步:运行结果如图5所示。

一劳永逸的简单方法

  如果先识别判断,再根据结果加参数,然后再运行批处理,未免太麻烦了。这里给出完整的批处理命令,可以把判断和安装补丁合二为一:
  FOR /R %%F IN (*.exe) DO @((@findstr _SFX_CAB_EXE_PATH "%%F" >nul && @start /wait %%F /U /Q /Z ) || @start /wait %%F /Q )
  qchain.exe

  把该批处理文件放在补丁目录,不需要把补丁文件集中到同一个目录中,for命令的/R参数会自动搜索所有子目录。注意:对于2002年12月份后的补丁,基本上不需要使用qchain这个命令,新补丁都内置了这个命令。

(责任编辑:ken)
TAG标签: windows 2003 补丁
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容