Pfad und Dateiname aus String extrahieren

  • Hallo zusammen,

    ich bin neu aber bei den ersten Schritten relativ zufrieden mit AutoIt.
    Eine Sache bekomme ich aber nicht gelöst und auch in dem Forum kann ich keine Lösung finden - wobei ich allerdings sagen muss, dass ich auch keine gute Idee bzgl. eines Suchtext habe.

    Folgendes Problem:
    Mit dem Befehl:
    $datei_splitten = FileOpenDialog("Datei zum Splitten auswählen", , "MP3-Dateien (*.mp3)", 1 )
    hole ich mir einen Dateinamen in die Variable $datei_splitten.

    In der Variable $datei_splitten steht dann z.B. "D:\Daten\Podcasts\Laberecke.mp3"

    Diesen String möchte ich in zwei Strings aufteilen: Einen mit dem Pfad und den anderen mit dem Dateinamen.
    Ich habe jetzt schon stundenlang probiert und in der Hilfedatei gesucht. Mit StringInStrkomme ich nicht weiter.

    Wäre für Hilfe sehr dankbar
    Die Flachzange

  • Abend,

    du kannst dir _PathSplit angucken, ansonsten habe ich gerade so etwas gebastelt

    Spoiler anzeigen
    [autoit]


    $patch = FileOpenDialog("Datei zum Splitten auswählen", , "MP3-Dateien (*.mp3)", 1 )

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

    For $i = StringLen($patch) To 1 Step -1
    If StringMid($patch, $i, 1) = '\' Then ExitLoop
    Next

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

    $patch1 = StringLeft($patch, $i-1)
    $patch2 = StringRight($patch, StringLen($patch)-$i)

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

    MsgBox(0,'',$patch1 & @CRLF & $patch2)

    [/autoit]

    Einmal editiert, zuletzt von Dan (17. Mai 2008 um 18:31)

  • hab auch einen Ansatz.....

    [autoit]

    $datei_splitten= FileOpenDialog("Datei zum Splitten auswählen", "", "MP3-Dateien (*.mp3)", 1 )
    $datei_splitten_array = StringSplit($datei_splitten,"\")
    msgbox(0,"",StringRegExpReplace($datei_splitten,$datei_splitten_array[$datei_splitten_array[0]]," ",0))
    msgbox(0,"",$datei_splitten_array[$datei_splitten_array[0]])

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    • Offizieller Beitrag

    Oder die StringInStr()-Variante:

    [autoit]


    $path = 'D:\Daten\Podcasts\Laberecke.mp3' ; der aufzuteilende Pfad
    $hit = StringInStr($path, '\', 1, -1) ; hier wird die Position des erstens Backslashs von rechts ermittelt. Der letzte Parameter = -1
    $file = StringMid($path, $hit+1) ; $file enthält alle Zeichen nach dem letzten Backslash
    $path = StringLeft($path, $hit) ; $path enthält den Pfad vom 1. Zeichen bis zum letzten Backslash

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

    msgbox(0,'', $path & ' <-> ' & $file)

    [/autoit]
  • Hallo an alle,

    so viele Antworten - vielen Dank
    Ich habe mir die Lösung ausgesucht und dann für ein besseres Verständnis für mich diskret aufgebaut:

    [autoit]


    $datei_splitten_array = StringSplit($datei_splitten,"\");Teilt den Verzeichnisnamen nach jedem "\" in ein Array
    $datei_splitten_n = $datei_splitten_array [0];Ermittelt die Anzahl der Arraybestandteile
    $datei_splitten_filename = $datei_splitten_array [$datei_splitten_n];Der letzte Arrayinhalt (also nach dem letzten \) muss der Dateiname sein
    $datei_splitten_filename_laenge = StringLen($datei_splitten_filename);Hier wird die Länge des Dateinamen ermittelt
    $datei_splitten_pfadname= StringTrimRight($datei_splitten,$datei_splitten_filename_laenge) ;Der Pfad ist der Ursprungsstring abzgl. rechts der Anzahl Zeichen der Datei

    [/autoit]

    Habt aber alle vielen Dank!
    PS: Oscars Version habe ich noch nicht durchgeschaut - mache ich aber gleich