FileInfo

  • Hallo Leute,

    ich habe eine UDF geschrieben, der die Informationen einer Datei zurückgibt.

    Spoiler anzeigen
    [autoit]

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetPfad
    ; Beschreibung: Gibt den Pfad in der die Datei liegt zurück.
    ; Syntax: _FileGetPfad($path)
    ; Wert: Gibt den Pfad zurück
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetPfad($path)
    $filegetname = _FileGetName($path)
    $filegettyp = _FileGetTyp($path)

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

    $pfadgetlen = StringLen($path)
    $filegetlen = StringLen($filegetname & "." & $filegettyp)
    $stringgetpfad = StringLeft($path, $pfadgetlen - $filegetlen - 1)

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

    Return $stringgetpfad
    EndFunc

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

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetName
    ; Beschreibung: Gibt den Namen der Datei zurück.
    ; Syntax: _FileGetName($path)
    ; Wert: Gibt den Dateinamen zurück.
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetName($path)
    ;Dateiname ermitteln:
    ;Teilt alle Ebenen bis hin zur Datei, durch das "\" Zeichen.
    $stringsplitgetname = StringSplit($path, "\")
    ;Gibt die Anzahl der Arrays (in diesem fall "Ebenen") zurück, plus 1. Das heißt wenn es 5 Ebenen sind inkl. Datei, dann wird es 6 Ebenen zurück gegeben.
    $uboundname = UBound($stringsplitgetname) - 1
    ;Ermittelt den Dateinamen.
    $stringgetname = $stringsplitgetname[$uboundname]

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

    ;Damit der Dateiname in diesem Array nicht mit den Dateiformat angezeigt wird, muss diese noch entfernt werden:
    ;Zeilt der Dateiname durch das "." Zeichen.
    $stringsplitname = StringSplit($stringgetname, ".")
    ;Ermittelt den Dateinamen, ohne den Dateiformat.
    $stringname = $stringsplitname[1]

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

    Return $stringname
    EndFunc

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

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetTyp
    ; Beschreibung: Gibt das Typ der Datei zurück.
    ; Syntax: _FileGetTyp($path)
    ; Wert: Gibt den Dateityp zurück.
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetTyp($path)
    ;Dateiformat ermitteln:
    ;Teilt den Namen durch das "." Zeichen.
    $stringsplitformat = StringSplit($path, ".")
    ;Gibt die Anzahl der Arrays an.
    $uboundformat = UBound($stringsplitformat) - 1
    ;Ermittelt das Dateiformat.
    $stringformat = $stringsplitformat[$uboundformat]

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

    Return $stringformat
    EndFunc

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

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetSize
    ; Beschreibung: Gibt die Größe einer Datei zurück.
    ; Syntax: _FileGetSize($path [, $sizetype = 1])
    ; Parameter: 0 = Bytes
    ; 1 = Kilobytes (KB)
    ; 2 = Megabytes (MB)
    ; 3 = Gigabytes (GB)
    ; Wert: Gibt die Dateigröße zurück.
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetSize($path, $sizetype = 1)
    ;Dateigröße ermitteln:
    If $sizetype = 0 Then
    $stringsize = FileGetSize($path) ;Bytes
    ElseIf $sizetype = 1 Then
    $stringgetsize = FileGetSize($path) / 1024 ;Kilobytes
    $stringsize = Round($stringgetsize, 1)
    ElseIf $sizetype = 2 Then
    $stringgetsize = FileGetSize($path) / 1048576 ;Megabytes
    $stringsize = Round($stringgetsize, 2)
    ElseIf $sizetype = 3 Then
    $stringgetsize = FileGetSize($path) / 1073741824 ;Gigabytes
    $stringsize = Round($stringgetsize)
    EndIf

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

    Return $stringsize
    EndFunc

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

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetVersion
    ; Beschreibung: Gibt die Version einer Datei zurück.
    ; Syntax: _FileGetVersion($path)
    ; Wert: Gibt die Dateiversion zurück.
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetVersion($path)
    $stringverion = FileGetVersion($path)

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

    Return $stringverion
    EndFunc

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

    ;=========================================================================================
    ;
    ; Funktionsname: _FileGetDate
    ; Beschreibung: Gibt das Datum einer Datei zurück.
    ; Syntax: _FileGetDate($path [, $timetype = 0])
    ; Parameter: 0 = Verändert (Standard)
    ; 1 = Erstellt
    ; 2 = Letzter Zugriff
    ; Wert: Gibt das Dateidatum zurück.
    ; Autor: Mehmet Tasdelen
    ;
    ;=========================================================================================

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

    Func _FileGetDate($path, $timetype = 0)
    ;Datumsinformationen ermitteln:
    If $timetype = 0 Then
    $stringgettime = FileGetTime($path, 0)
    $stringtime = $stringgettime[2] & "." & $stringgettime[1] & "." & $stringgettime[0]
    ElseIf $timetype = 1 Then
    $stringgettime = FileGetTime($path, 1)
    $stringtime = $stringgettime[2] & "." & $stringgettime[1] & "." & $stringgettime[0]
    ElseIf $timetype = 2 Then
    $stringgettime = FileGetTime($path, 2)
    $stringtime = $stringgettime[2] & "." & $stringgettime[1] & "." & $stringgettime[0]
    EndIf

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

    Return $stringtime
    EndFunc

    [/autoit]

    4 Mal editiert, zuletzt von MehmeX (22. Juni 2009 um 20:11)

    • Offizieller Beitrag

    Hallo MehmeX!

    Ist nicht böse gemeint, aber das geht auch kürzer:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $array = _FileGetInfo('C:\Programme\AutoIt3\AutoIt3.exe', 0, 1)
    _ArrayDisplay($array)

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

    Func _FileGetInfo($sPath, $iSizeFormat = 0, $iTimeFormat = 0)
    If Not FileExists($sPath) Then Return SetError(1, 0, 0)
    If $iSizeFormat < 0 Or $iSizeFormat > 3 Then $iSizeFormat = 0
    If $iTimeFormat < 0 Or $iTimeFormat > 2 Then $iTimeFormat = 0
    Local $aSize[4] = [' Byte(s)', ' KByte(s)', ' MByte(s)', ' GByte(s)']
    Local $aOut[5] = [ _
    StringRegExpReplace($sPath, '.*\\(.*)\.*.*', '$1'), _ ; Dateiname
    StringRegExpReplace($sPath, '(.+\\).*\.*.*', '$1'), _ ; Dateipfad
    Round(FileGetSize($sPath) / 1024 ^ $iSizeFormat, 2) & $aSize[$iSizeFormat], _ ; Dateigröße
    FileGetVersion($sPath), _ ; Dateiversion
    StringRegExpReplace(FileGetTime($sPath, $iTimeFormat, 1), '(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})', '$3.$2.$1 $4:$5:$6')] ; Dateidatum
    Return $aOut
    EndFunc

    [/autoit]

    Ich will Dir nur mal zeigen, dass man manches vereinfachen kann. :)

  • Ja, das finde ich auch gut. Das Problem ist nur, dass ich mich mit StringRegExpReplace noch nicht so gut auskenne. :D

    Einmal editiert, zuletzt von MehmeX (2. Juni 2009 um 14:55)