M3U Converter Path Problem

  • Hallo, habe ein kleines Script geschrieben um M3u Playlisten zu bearbeiten, z.b. wenn sich der Laufwerksbuchstabe oder der Path im Netz geändert hat.
    Das Problem ist nun, wenn die M3U Datei auf der Wurzel liegt( egal ob C: oder F: ) oder im Script Verzeichnis funzt es super ,jedoch nicht wenn es z.b. auf dem Desktop o.ä liegt.

    Würde mich über einen Tipp zur Lösung sehr freuen.
    Danke!

    PS: zum Text suchen und ersetzen rufe ich SED auf.

    [autoit]

    $file=FileOpen(@ScriptDir & "\config.txt",0)
    $Input=FileReadLine(@ScriptDir & "\config.txt",4)
    $Output=FileReadLine(@ScriptDir & "\config.txt",6)
    $NAME=FileReadLine(@ScriptDir & "\config.txt",8)

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

    $SED=(@ScriptDir & "\sed.exe")
    HotKeySet("{ESC}","_exit")

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

    if $file=-1 Then ;Abfrage ob config.txt vorhanden
    MsgBox(0,"Error","Unable to open the config.txt")
    Exit
    EndIf

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

    $message = "Please select the Playlist."

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

    $var = FileOpenDialog($message, @WindowsDir & "\", "Playlist (*.m3u;)", 1 + 4 )

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

    If @error Then
    MsgBox(16,"","No Playlist selectet")
    Exit
    Else
    $var = StringReplace($var, "|", @CRLF)
    MsgBox(64,"PLAYLIST","You chose " & $var)
    EndIf

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

    If FileExists($SED) Then
    RunWait(''&$SED&' s\'&$Input&'\'&$Output&'\g '&$var&' >'&$NAME&'.m3u')
    sleep(200)
    MsgBox(64,"M3U Converter","Converting successfully Done!",2)
    Else
    MsgBox(48,"\sed.exe" , "Does NOT exists")
    EndIf

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Einmal editiert, zuletzt von sonyman (29. Juli 2010 um 09:47)

  • M3Us kann man doch mit relativen Pfaden erstellen?

    Zu deinem Problem: Vermutlich sind Leerzeichen im Pfad. Da darfst du die doppelten Anführungszeichen in der Run-Befehlszeile nicht vergessen:

    [autoit]

    RunWait('"'&$SED&'" s\'&$Input&'\'&$Output&'\g '&$var&' >"'&$NAME&'".m3u')

    [/autoit]


    Bei dem Teil mit Input \ Output weiß ich jetzt nicht ob und wo da Anführungszeichen hinkommen.

  • Hallo progandy,
    danke für die Antwort!
    Habe den Code geändert jedoch ohne Erfolg.
    Was mir noch aufgefallen ist -
    Compilermeldung:==> Unable to execute the external program.:
    Meldung kommt nur wenn ich einen langen path habe!
    Irgendwo scheint es da noch einen Hacken zu geben, ich habe SED mit einer Bat ausgeführt da klappt es auch mit langen Pathnamen.

    Gruß
    Sonyman

  • Äh, ich habe das letzte Anführungszeichen falsch gesetzt. Das sollte nach .m3u, stimmts?
    $NAME&'.m3u"'

    PS: Du kannst aber auch alles mit AutoIt machen (FileOpen, FileRead(Line), FileWrite(Line), FileClose, StringReplace, StringRegExpReplace)

  • Hallo progandy,
    es muss an einer anderen Stelle klemmen.
    Habe nun:

    [autoit]

    If FileExists($SED) Then
    RunWait('"'&$SED&'" s\'&$Input&'\'&$Output&'\g '&$var&' >"'&$NAME&'.m3u"')
    sleep(200)
    MsgBox(64,"M3U Converter","Converting successfully Done!",2)
    Else
    MsgBox(48,"\sed.exe" , "Does NOT exists")
    EndIf

    [/autoit]


    jedoch ohne Erfolg
    Wenn es nicht will versuche ich es mal komplett mit AutoiT.

    Danke!

    Gruß
    Sonyman
    PS: der Path wird nicht relativ sondern absolut ausgegeben, daher ist die Änderung via Script erforderlich. :)

  • Warum machst du nicht alles per Autoit und lässt die sed.exe weg? Das wäre um einiges einfacher ;)

    PS: Praktisch wäre auch eine INI und INIRead statt deinem FileReadLine am Anfang des Skripts.

  • Ich steige zwar nicht so ganz durch (beim lesen des Scripts) aber ist deine Quelldatei (die ggf. Leerzeichen von 'Dokumente und Einstellungen' enthält) nicht in der Varibale '$var' ?

    Dann müsste ma diese natürlich auch in " einfassen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Zitat

    Dann müsste ma diese natürlich auch in " einfassen.

    Danke für den Hinweis!

    Jetzt funzt es !!


    Gruß
    Sonyman