? Название: hfinfo.vbs
? Описание: Shows hotfix information
? Версия: 1.0
? Автор: Mark Burnett (mb@xato.net)
? Комментарии: работает с большинством исправлений Windows 2000
? Copyright (c)2003 Mark Burnett (mb@xato.net)
?
? ОТКАЗ ОТ ОБЯЗАТЕЛЬСТВ:
? THIS SOFTWARE AND ACCOMPANYING DOCUMENTATION ARE PROVIDED «AS IS» WITHOUT
? EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
? WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO
? EVENT SHALL THE DEVELOPERS, CONTRIBUTORS, OR DISTRIBUTORS BE LIABLE FOR ANY
? DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES,
? INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
? LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION, HOWEVER CAUSED AND
? on ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT,
? INCLUDING NEGLIGENCE OR OTHERWISE, ARISING IN ANY WAY OUT OF THE USE OF
? THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
?
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set objArgs = WScript.Arguments
?Проверка аргументов
If objArgs.Count=0 Then
	WScript.Echo «Usage: hfinfo.vbs »

Else
	sHotfix=objArgs(0)
End If
?Извлечение файлов исправления по пути temp
WScript.Echo «Opening hotfix...»
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set oEnv = WshShell.Environment(«Process»)
sPath=oEnv(«TEMP») & «» & fso.GetBaseName(sHotfix)
WshShell.Run sHotfix & « /q /x:» & sPath, 0, True
Вывод строки заголовка
WScript.Echo vbCrLf & RightJustify(«Date»,10) & « « & _
				 RightJustify(«Time»,11) & « « & _
				 LeftJustify(«Version»,13) & _
				 RightJustify(«Size»,10) & « « & _
				 LeftJustify(«Name»,28)
WScript.Echo String(79,»-»)
?Формат и выходная информация каждого файла
On Error Resume Next
Set oFolder = fso.GetFolder(sPath)
For Each oFile in oFolder.Files
	If InStr(«spmsg.dll spuninst.exe svcpack1.dll empty.cat»,oFile.Name)=0 Then
	sDateAndTime=Split(oFile.DateCreated,» «)
	sDateStamp=RightJustify(sDateAndTime(0), 10)
	sTimeStamp=RightJustify(sDateAndTime(1) & « « & sDateAndTime(2), 11)
	sFileVersion=LeftJustify(fso.GetFileVersion(oFile.Path),13)
	sFileSize=RightJustify(FormatNumber(CLng(oFile.Size),0,0,0,-1),10)
	sFileName=LeftJustify(oFile.Name,28)
	WScript.Echo sDateStamp & « « & sTimeStamp & « « & sFileVersion & _
					 sFileSize & « « & sFileName
	End If
Next
?Cleanup
fso.DeleteFolder sPath, True
Set fso = Nothing
Function LeftJustify(sData, vColWidth)
	vLen=Len(sData)
	If vLen > vColWidth Then 
		sData=Left(sData,vColWidth-2) & «...»
		vLen=vColWidth
	End If
	LeftJustify=sData & Space(vColWidth-vLen)
End Function
Function RightJustify(sData, vColWidth)
	vLen=Len(sData)
	If vLen > vColWidth Then 
		sData=»...» & Left(sData,vColWidth-2)
		vLen=vColWidth
	End If
	RightJustify=Space(vColWidth-vLen) & sData
End Function