Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows XP系統教程 >> XP系統基礎知識 >> 自動化的給windows補丁分類

自動化的給windows補丁分類

日期:2017/1/24 11:48:51      編輯:XP系統基礎知識
 有些人使用 批處理文件 來自動安裝windows 的補丁,但是由於 Windows 主要有2類不同補丁程序,而且需要不同的參數,參數錯誤的話,會導致無法安裝,所以對不同的補丁需要使用不同的參數。下面我就來具體分析。

我把Windows 2003 server 的補丁文件放在同一個目錄,可以清楚地看到補丁文件名字前面的圖標有2種類型,一種是簡單的可執行文件的圖標,另外一種是標志壓縮文件的可執行文件的圖標。

WindowsServer2003-KB823559-x86-ENU.exe文件的圖標是一個簡單的可執行文件的圖標,如圖update.png,察看該補丁的幫助信息,可以看出WindowsServer2003-KB823559-x86-ENU是使用微軟的update程序來安裝補丁的,從圖KB823559ver.png,察看該補丁的版本信息,可以看出WindowsServer2003-KB823559-x86-ENU這個補丁是由SFXCAB.EXE而來的,所有其它的具有普通可執行文件的圖標的補丁程序都有類似的性質。

DirectX9-KB819696-x86-ENU.exe文件的圖標是一個標志壓縮文件的可執行文件的圖標,如圖如圖directx9.png,察看該補丁的幫助信息,它所認識的參數不包括/U和/Z,如果使用/U 參數來運行就會產生錯誤,如圖error.png。如圖directx9ver.png,察看該補丁的版本信息,可以看出DirectX9-KB819696-x86-ENU這個補丁是由WEXTRACT.EXE而來的,所有其它的具有標志壓縮文件的可執行文件的圖標的補丁程序也都有類似的性質。

現在很清楚了Windows有2類不同的補丁,使用了不同的補丁程序,需要的參數也不一樣。

那麼如何在批處理文件中區分這2類不同的補丁呢?最穩妥的辦法是找一個小程序可以檢測補丁文件的資源信息,如果補丁的資源中包括了一個標志壓縮文件的可執行文件的圖標,那麼該補丁就是第2類補丁,僅僅使用/Q參數,如果補丁的資源中不包括圖標,那麼就是第一類補丁,可以使用/U /Q /Z參數來安裝補丁。
這裡我給出一個更加簡單的方法,僅僅使用Windows的內部命令,不需要額外的程序了,就是查找補丁文件中的特征字符串,如果一個字符串僅僅在某一類補丁程序中存在,我們就可以根據這個來區分補丁的類型。
如圖 特征字符串.png,用文本編輯器分別打開WindowsServer2003-KB823559-x86-ENU.exe 文件和DirectX9-KB819696-x86-ENU.exe文件,可以找到很多特征字符串,如字符串“_SFX_CAB_EXE_PATH”僅僅存在於SFXCAB.EXE類型的補丁,而字符串“CABINET”和“WEXTRACT”僅僅存在於WEXTRACT.EXE類型的補丁文件中。所以可以 用查找字符串的方法來決定補丁文件的類型,
如下命令,就可以指明該補丁文件需要的參數:(@findstr _SFX_CAB_EXE_PATH 補丁文件名字 >nul && @echo 參數 /U /Q /Z) || @echo 參數 /Q
上面的命令的意思是如果查找到字符串_SFX_CAB_EXE_PATH,就說明補丁使用 /U /Q /Z參數 ,否則的話,使用/Q參數。
運行結果如圖findstr.png。

最後給出完整的批處理命令:

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這個命令,新的補丁都內置了這個命令。
Copyright © Windows教程網 All Rights Reserved