Lines zählen

  • Da mein Vater für seine Arbeit die Lines von über 800 Dateien zählen musste, hat er sich gedacht, dass er sich dafür ein Perl Script schreibt, jedoch hat er gestern vergessen es sich nach hause zu schicken lassen. Also dachte ich mir: Das kannst du auch mit Autoit. ;)

    Also mein Programm zählt die Lines von allen textartigen Dateien. ;)

    Danke an bernd670 für seine FindListRecursive UDF. :)


    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <Array.au3>
    Global $dis = ""
    Global $add = ""
    While 1

    [/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{F1}","open")
    HotKeySet("{ESC}","esc")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    WEnd
    Func open()
    $open = FileSelectFolder("Choose a folder",@DesktopDir)
    $file = FileListRecursive($open,"*.*",1,1)
    $input = 0
    While $input <> 1
    $input = InputBox("File Type","Enter your file type, for example: .txt")
    If $input <> "" Then
    For $i = 1 to _ArrayMax($file) Step 1
    If StringInStr($file[$i],$input) <> 0 Then
    Dim $count
    _FileReadToArray($file[$i],$count)
    If $i = 1 Then
    $dis = $count[0]
    Else
    $add = $count[0]
    $dis = $dis + $add
    Endif

    [/autoit] [autoit][/autoit] [autoit]

    Endif
    Next
    Else

    [/autoit] [autoit][/autoit] [autoit]

    $input = 1
    Endif
    WEnd
    MsgBox(0,"Lines","Lines: " & $dis)
    $dis = ""
    $add = ""
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func esc()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Name: FileFindRecursive
    ; Description: Sucht rekursiv nach Dateien und Ordnern
    ; Parameter(s): $szStartPath = Path ab dem gesucht werden soll
    ; $szFileName = Datei nach der gesucht werden soll
    ; $iFlag (optional) = Gibt an was zurückgegeben werden soll
    ; 0 = Dateien und Ordner (default)
    ; 1 = nur Dateien
    ; 2 = nur Ordner (ignoriert $szFileName)
    ; $iRetFormat (optional) = Rückgabeformat
    ; 0 = als String (default)
    ; 1 = als Array
    ; $szDelim (optional) = Trennzeichen wenn $iRetFormat = 0 (@CRLF ist default)
    ; Requirement(s): keine
    ; Return Value(s): bei Erfolg: Ergebnis als String oder Array
    ; bei Fehler:
    ; Author(s): bernd670
    ;
    ;===============================================================================
    Func FileListRecursive($szStartPath, $szFileName, $iFlag = 0, $iRetFormat = 0, $szDelim = @CRLF)
    Local $hFF, $szFindName, $szRetValue = ""
    If $iFlag = Default Then $iFlag = 0
    If $iRetFormat = Default Then $iRetFormat = 0
    If $szDelim = Default Then $szDelim = @CRLF
    If StringRight($szStartPath, 1) <> "\" Then $szStartPath &= "\"
    If $iFlag < 2 Then
    $hFF = FileFindFirstFile($szStartPath & $szFileName)
    If $hFF <> -1 Then
    While True
    $szFindName = FileFindNextFile($hFF)
    If @error Then
    FileClose($hFF)
    ExitLoop
    EndIf
    If ($szRetValue <> "") And (StringRight($szRetValue, StringLen($szDelim)) <> $szDelim) Then $szRetValue &= $szDelim
    $szRetValue &= $szStartPath & $szFindName
    WEnd
    EndIf
    EndIf
    $hFF = FileFindFirstFile($szStartPath & "*.*")
    If $hFF = -1 Then Return $szRetValue
    While True
    $szFindName = FileFindNextFile($hFF)
    If @error Then
    FileClose($hFF)
    ExitLoop
    EndIf
    If StringInStr(FileGetAttrib($szStartPath & $szFindName), "d") Then
    If ($szRetValue <> "") And (StringRight($szRetValue, StringLen($szDelim)) <> $szDelim) Then $szRetValue &= $szDelim
    If ($iFlag = 0) Or ($iFlag = 2) Then $szRetValue &= $szStartPath & $szFindName & "\" & $szDelim
    $szRetValue &= FileListRecursive($szStartPath & $szFindName & "\", $szFileName, $iFlag, 0, $szDelim)
    EndIf
    WEnd
    If StringRight($szRetValue, StringLen($szDelim)) = $szDelim Then $szRetValue = StringTrimRight($szRetValue, StringLen($szDelim))
    If $iRetFormat = 0 Then
    Return $szRetValue
    Else
    Return StringSplit($szRetValue, $szDelim, 1)
    EndIf
    EndFunc ;==>FileListRecursive

    [/autoit]