Andruxa
|
Posted: Thu Jun 25, 2009 23:41 Post subject: |
|
|
Batya wrote: | vbs-скрипт:
Code: | '====================================================================================
' Подсчет CRC32 у файлов из файла-списка. Сохранение CRC32 в excel-файле.
' Параметры скрипта:
' {файл-список} {excel-файл}
' Для работы скрипта необходимо зарегистрировать в системе компонент DynamicWrapperX
'====================================================================================
Option Explicit
'=============== Изменяемые параметры ===============================================
Const StartCell = "A1" 'Первая ячейка таблицы
'====================================================================================
Dim WRP, FSO, WSH, Mess, FileList, XlsFile, FCrc, F, K, objXL, i, j
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set WRP = CreateObject("DynamicWrapperX")
WRP.Register "ImageHlp.DLL", "MapFileAndCheckSum", "i=sUU", "r=u"
MessDefine
CheckParams
Set FCrc = CreateObject("Scripting.Dictionary")
For Each F In Split(FSO.OpenTextFile(FileList).ReadAll, vbNewLine)
If F <> "" Then
F = GetPath(F)
If Not FCrc.Exists(F) Then FCrc.Add F, GetCrc(F)
End If
Next
Set objXL = WScript.CreateObject("Excel.Application")
objXL.Workbooks.Open XlsFile
i = objXL.Range(StartCell).Row
j = objXL.Range(StartCell).Column
For Each K In FCrc.Keys
objXL.Cells(i,j ).Value = K
objXL.Cells(i,j+1).Value = FCrc(K)
i = i + 1
Next
'Сохранение результатов
objXL.Application.ActiveWorkbook.Save
objXL.Quit()
MsgBox Mess(5), vbInformation + vbOKOnly, Mess(0)
Quit
'===== Процедуры и функции ===============================================================
'Проверка входных параметров
Sub CheckParams
With WScript
If .Arguments.Count = 0 Then
MsgBox Mess(1), vbCritical + vbOKOnly, Mess(0)
Quit
End If
FileList = GetPath(.Arguments(0))
If Not FSO.FileExists(FileList) Then
MsgBox Mess(2), vbCritical + vbOKOnly, Mess(0)
Quit
End If
If .Arguments.Count < 2 Then
MsgBox Mess(3), vbCritical + vbOKOnly, Mess(0)
Quit
End If
XlsFile = GetPath(.Arguments(1))
If Not FSO.FileExists(XlsFile) Then
MsgBox Mess(4), vbCritical + vbOKOnly, Mess(0)
Quit
End If
End With
End Sub
'Подсчет контрольной суммы файла
Function GetCrc(pPath)
Dim lRess, lsHeader, lsCalcd
lsHeader = 0: lsCalcd = 0
lRess = WRP.MapFileAndCheckSum(pPath, lsHeader, lsCalcd)
GetCrc = lsCalcd
End Function
'Путь
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
'Описание сообщений
Sub MessDefine
Set Mess = CreateObject("Scripting.Dictionary")
With Mess
.Add 0, "Подсчет CRC32"
.Add 1, "Не указаны параметры!"
.Add 2, "Файл-список не существует!"
.Add 3, "Указаны не все параметры!"
.Add 4, "Excel-файл не существует!"
.Add 5, "Операция завершена."
End With
End Sub
'Выход
Sub Quit
Set objXL = Nothing
Set Mess = Nothing
Set FCrc = Nothing
Set WRP = Nothing
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit
End Sub |
Для работы скрипта необходим DynamicWrapperX.
Для работы скрипта по выделенным файлам в TC первым параметром нужно указать %L, вторым - имя существующего Excel-файла, в который сбрасываются результаты. |
Можно поподробнее про установку.
Это макрос?
Что куда вставлять? спасибо |
|