Platzhalter?

  • Guten Tag,
    ich hätte mal eine Frage.
    Es kennt doch sicherlich jeder die gewöhnlichen Platzhalter ('*') die man zum Beispiel beim Durchsuchen von Ordnern nach Dateien verwendet ('*.mp3' für alle mp3-Dateien).
    Nun bräuchte ich so was in AutoIt. Leider ist es ziemlich schwer nach '*' zu googlen und deshalb bin ich leider gezwungen, den Thread zu erstellen.

    Ich versuche ein Programm zu schreiben, das den Quellcode einer Webseite ausliest, dort die Dateinamen von Musiktiteln entnimmt
    und sie dann mit den Dateien in einem meiner Ordner vergleicht. Wenn die Dateien im Ordner gefunden werden, sollen sie in einen anderen Ordner kopiert
    und in eine *.txt geschrieben werden.
    Bereits beim Vergleichen komme ich nicht weiter, da die Musiktitel die ich aus der Webseite auslese, nicht exakt übereinstimmen.
    Nur die erste Hälfte stimmt überein.

    Beispiel:

    Zitat von Webseite

    Eminem - Love Me

    Zitat von Ordner

    Eminem - Love Me [HD]

    Die Titel fangen also gleich an, bloß im Ordner ist normalerweise noch ein 'Zusatz' (manchmal das '[HD]', manchmal das Album o.ä.).

    Scriptausschnitt:

    [autoit]

    For $i = 1 To 50 Step 1 ; es sind immer 50 Titel auf einer Seite
    If FileExists ($sFolder & $aTrack[$i] & "*") = 1 Then ; $aTrack[n] enthält immer den kurzen Musiktitel von der Webseite
    FileCopy ($sFolder & $aTrack[$i] & "*", $sNewFolder & $aTrack[$i])
    FileWrite (@DesktopDir & "\titel.txt", $aTrack[$i])
    EndIf
    Next

    [/autoit]

    Das '*' scheint irgendwie nicht so zu funktionieren, wie ich es mir erhofft habe...

    Hoffentlich versteht jemand, was das Problem ist und kann mir weiterhelfen.

    PS: Ich wäre natürlich auch bereit, eine andere Art des 'Vergleichens' auszuprobieren... Solange es eben klappt. :D

    MfG

    Einmal editiert, zuletzt von $var (2. Oktober 2011 um 18:11)

  • Guten Morgen,

    Wenn es immer nur nen 'Zusatz' gibt, dann kannst du auch mit _FileListToArray alle Dateien in deinem Ordner in ein Array packen und diese dann mit der Forschleife abfahren und überprüfen, ob dort der Titel enthalten ist (StringInStr).
    Ansonsten könntest du noch die ID3-Tags auslesen.

  • Morgen blubbstar,

    ich habe StringInStr bereits vorher mal ausprobiert, doch es verwirrte mich auf Dauer nur, also habe ich es gelassen.
    Jetzt habe ich es noch mal probiert und endlich verstanden... :P
    Das Problem sieht jetzt so aus: Vor dem jeweiligen Namen in $aTrack ist immer ein Zeilenumbruch und deshalb können die Dateien nicht richtig verglichen werden (weil im echten Dateinamen eben kein Zeilenumbruch ist bzw. sein kann).
    Ich habe bereits folgendes ausprobiert um die Zeilenumbrüche zu entfernen, doch es klappt leider nicht:

    [autoit]

    For $i = 1 To 50 Step 1
    StringReplace ($aTrack[$i], @CRLF, "") ; auch @CR und @LF einzeln
    Next

    [/autoit]


    So sieht ein einzelnes Element aus, wenn ich es mit _ArrayDisplay anzeigen lasse und dann kopiere:

    Code
    [1]|
    Eminem - Love Me


    Was tun?