Dateityp erkennen

  • Hi,

    ich lese mit folgenem Script alle Dateien/Verzeichnisse aus einem Ordner aus und übergebe die Namen an eine Funktion:

    Spoiler anzeigen
    [autoit]

    $search = FileFindFirstFile(@ScriptDir & "\Desktop\*.*")

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

    If $search = -1 Then
    Else
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
    If @extended = 1 Then
    _button($Desktop, "Folders\Closed.ico", "Desktopshort", $file)
    Else
    _button($Desktop, "File Types\TextDocument.ico", "Desktopshort", $file, ".txt")
    EndIf
    WEnd
    EndIf

    [/autoit]

    Wie könnte ich hier nun noch erkennen welchen Dateityp die Datei hat. Habe schon überlegt mit StringInStr nach einem Punkt zu suchen, ist aber aber nicht das richtige weil in einem Dateinamne ja auch Punkte vorkommen können. Und prüfen auf z.b. ".txt" wäre auch umständlich weil ich dann ja für alle Dateitypen die auf der Welt existieren prüfen müsste.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

    2 Mal editiert, zuletzt von chip (27. Februar 2010 um 00:49)

  • schau mal nach

    [autoit]

    _pathsplit()

    [/autoit]
  • [autoit]

    $str = "C:\punkt\abctxt"
    $sFileTyp = StringTrimLeft($str, StringInStr($str, ".", "", -1))
    MsgBox(0, "", $sFileTyp)

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

    #include <file.au3>
    #include <array.au3>
    Dim $szDrive, $szDir, $szFName, $szExt
    $TestPath = _PathSplit($str, $szDrive, $szDir, $szFName, $szExt)
    _ArrayDisplay($TestPath, "Demo _PathSplit()")
    if $szExt="" then
    msgbox (0,0,"keine Dateiextension!")
    Else
    msgbox (0,0,"Dateiextension = "&$szExt)
    endif

    [/autoit]

    man muss nicht jedesmal das Rad neu erfinden ^^
    Wobei es sicherlich dazu auch einen regex gibt...

  • Danke das _pathsplit() war genau das was ich gesucht hatte :).

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.