Подсчет строк кода (и не только) с отчетом в IE (vbscript)
От: ST1 Россия  
Дата: 03.05.12 08:37
Оценка:
Использование:
1) Помещаем код в vbs файл, например linescounter.vbs
2) Выделяем в папке интересующие файлы (любого типа, не обязательно сорсы) и переносим на файл скрипта. Появится IE с таблицей отчета
2) В коде булевый параметр skipEmpty задает игнорирование пустых строк (определяется через Trim; по умолчанию 0)

' VB Script Document
option explicit

Const thisScriptName = "linescounter.vbs"

Const ForReading = 1

'если запускаем скрипт автономно
if WScript.ScriptName = thisScriptName then
    if WScript.Arguments.Count > 0  then        
        Dim cb
        set cb = new FindFileCallback

        Dim fname
        Dim res
        for each fname in WScript.Arguments
            res = cb.Found(fname)
            If res(0) <> 0 Then    
                Msgbox Join(res, vbCrLf), vbCritical, "Ошибка в " & thisScriptName 
            End If
        next
        
        set cb = nothing    
    else
        WScript.Echo "Формат вызова: " & thisScriptName & " " & "{имя файла}"
    end if         
end if
    
'Данный интерфейс предоставляет callback функцию для FindFile
class FindFileCallback
    Public skipEmpty
    Private fso
    Private table
    Private filesCount
    Private linesTotal

    Private Sub Class_Initialize() 
        skipEmpty = 0
        linesTotal = 0
        set fso = CreateObject("Scripting.FileSystemObject")
        
        set table = new TableBuilder
        table.ColumnsCount = 4

        table.AddCell "Номер"
        table.AddCell "Имя"
        table.AddCell "Папка"
        table.AddCell "Количество строк"                
    End Sub

    Private Sub Class_Terminate()        
        table.AddCell "Всего строк"
        table.AddCell linesTotal
                            
        set fso = Nothing
        set table = Nothing
    End Sub

    'Данная функция будет вызываться в процессе работы FindFile::Find() для каждого найденного файла
    Public Function Found(fname)
        On Error resume next
        
        filesCount = filesCount + 1

        Dim fp
        set fp = fso.OpenTextFile(fname, ForReading, False)
    
        Dim s
        DIm linesCounter
        do while not (fp.atEndOfStream)
            s = fp.ReadLine
            if (not CBool(skipEmpty)) or (CBool(skipEmpty) and Trim(s) <> "") then 
                linesCounter = linesCounter + 1
            end if                
        loop
        
        fp.Close
         
        table.AddCell filesCount  
        table.AddCell "<a href = """ & fname & """> " & fso.GetFileName(fname) & "</a><br>"        

        Dim dir
        dir = fso.GetParentFolderName(fname)         
        table.AddCell "<a href = """ & dir & """> " & dir & "</a><br>"

        table.AddCell linesCounter            

        linesTotal = linesTotal + linesCounter
                            
        if Err.Number = 0 then
            Found = Array(0, "", "")
        else
            Found = Array(Err.Number, Err.Source, Err.Description)
            Err.Clear
        end if                                       
    end function    
end class

class TableBuilder
    Private oIE
    Private doc
    Private nCols
    Private iCol

    Private Sub Class_Initialize() 
        Set oIE = CreateObject("InternetExplorer.Application")                 
        
        oIE.Navigate "about:blank"   
        oIE.Visible = 1 

        Do While (oIE.Busy)
            WScript.Sleep 200
        Loop

        Set doc = oIE.Document
        doc.open
        doc.WriteLn "<html><head><title></title></head>" 
        doc.WriteLn "<body>"
        
        doc.WriteLn "<table align = left border = 0 cellspacing = 10>"
        
        nCols = 1
    End Sub

    Private Sub Class_Terminate()        
        doc.WriteLn "</table>"
        doc.WriteLn "</body></html>"
        doc.Close
        set oIE = nothing
    End Sub
        
    Public property Let ColumnsCount(val)
        if val > 0 then
            nCols = val
        else
            nCols = 1
        end if                 
    end property
    
    Public Sub AddCell(cellBody)
        if iCol = 0 then
            doc.WriteLn "<tr>"
        end if
                        
        doc.WriteLn "<td>"
        doc.WriteLn CStr(cellBody)
        doc.WriteLn "</td>"        

        iCol = iCol + 1

        if iCol = nCols then
            doc.WriteLn "</tr>"
            iCol = 0
        end if                
    end sub
end class
Re: Подсчет строк кода (и не только) с отчетом в IE (vbscript)
От: Doom100500 Израиль  
Дата: 12.08.12 08:15
Оценка:
Здравствуйте, ST1, Вы писали:

ST1>Использование:

ST1>1) Помещаем код в vbs файл, например linescounter.vbs
ST1>2) Выделяем в папке интересующие файлы (любого типа, не обязательно сорсы) и переносим на файл скрипта. Появится IE с таблицей отчета
ST1>2) В коде булевый параметр skipEmpty задает игнорирование пустых строк (определяется через Trim; по умолчанию 0)

Как в винде всё сложно.
Спасибо за внимание
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.