StringRegExpReplace mit Dateipfad

  • Hallo zusammen,

    ich habe da ein kleine Problem. Ich habe ein Script das mit rekursiv einen Ordner durchsucht und dain alle Dateien eines Typs findes. Das Script gibt mir als Array den absoluten Pfad der gefundenen Dateien aus. Ein solcher Pfad schaut z.B. so aus:

    Code
    C:\2. Freigegeben\Player\10.3\test.msi

    folgt also immer dem selben Schema - [PFAD] \ [Applikationsname] \ [Version] \ Dateien

    Ich muss den String nun so kürzen das ich nach Möglichkeit den Part "C:\2. Freigegeben\Player\10.3\" bekomme und dann nochmal einzeln die Verison also "10.3"

    StringRegExpReplace müsste nach meiner Idee richtig sein, ich schaffe es aber nicht die Expression korrekt zu bauen, kann mir da jemand helfen?

    Beste Grüße & vielen Dank.
    Lars

  • Servus,

    bin leider kein StringRegExp - Experte, aber so sollte es auch ausreichen:

    [autoit]

    $string = "C:\2. Freigegeben\Player\10.3\test.msi"

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

    $pfad = StringTrimRight($string, StringLen($string) - StringInStr($string, "\", 0, -1))

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

    MsgBox(0, "T", $pfad)

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

    $version = StringTrimRight($string, StringLen($string) - StringInStr($string, "\", 0, -1) + 1)
    $version = StringTrimLeft($version, StringInStr($version, "\", 0, -1))

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

    MsgBox(0, "V", $version)

    [/autoit]

    Gruß

    Prajoss

    "Never touch a running System!"

    • Offizieller Beitrag

    So geht's mit StringRegExpReplace:

    [autoit]


    $string = "C:\2. Freigegeben\Player\10.3\test.msi"
    $path = StringRegExpReplace($string, '(.+\\).+', '$1')
    $version = StringRegExpReplace($string, '.+\\(.+)\\.+', '$1')
    MsgBox(0, 'Test', 'Pfad = ' & $path & @CR & 'Version = ' & $version)

    [/autoit]

    Edit: Er wollte die Versionsnummer, nicht die Datei. Geändert!