Der Formatiert den Dateinamen nach "Künstler - Album - Tracknr. Titel"
Beispiele:
Dela - Atmosphere Airlines Vol.1 - 03. Stakes Is High.mp3
Envoys - Violescent - 04. Ego Is the Mankiller.mp3
65daysofstatic - The Fall Of Math (deluxe edition) - 02. install a beak in the heart that clucks time in arabic.flac
Oliver Huntemann - Magnet.mp3
Dabei ist die Tracknummer immer zweistellig und wird, wenn es sein muss, um eine 0 ergänzt.
Es funktioniert für mich ziemlich gut so und vielleicht hilft das dem ein oder anderen.
Hallo Torben, da hast du uns ja ein schönes Osterei geschenkt.
Es wirft mehr spezielle Fragen auf, als dass es eine Lösung für den Alltag wäre.
Was ist das für ein Tagfeld %_% ?
Wie kommt es in die Datei hinein und welchen Wert hat es, so dass es sinnvoll in der Funktion $sub benutzt werden kann?
Warum benutzt du das Doppel-Apostroph, wenn doch in Mp3tag das Einfach-Apostroph eine Zeichenkette begrenzt?
Warum benutzt du zwei Doppel-Apostrophe (""), was willst du damit bewirken?
Mit ...
ARTIST = Alanis Morissette
ALBUM = Ironic
TITLE = You Oughta Know
TRACK = 05/05
... ergibt dein Formatstring folgendes Ergebnis ... Alanis Morissette" - "Ironic" - ""0"5". "You Oughta Know
%_% hat bei mir immer so Funktioniert dass es ein Platzhalter für irgendetwas beliebiges ist.
Manchmal sind ja Tracks in dieser Form gespeichert: 4/9. Da wird daraus dann 04 gemacht.
doppel apostrophe haben bei mir immer genauso funktioniert wie einfache. Mit zwei von denen wollte ich eine leere Zeichenkette einfügen.
Ich werd wohl in Zukunft den code von ohrenkino benutzen:
[%artist% - ][%album% - ][$num(%track%,2). ]%title%
Es ist tatsächlich möglich, z. B. im Dialog "Erweiterte Tags..." ein Tagfeld anzulegen mit dem Namen "" (nur ein Unterstrich), aber dieses Tagfeld kann man beim Scripting nicht auslesen.
Der %%-Inhaltsoperator gibt keinen Wert zurück ... %% funktioniert nicht.
Aus ...
"0"$sub(%track%,/%_%)"
wird z. B. ...
"0"3"
... und das ist Murks.
Das kann ich nicht glauben.
In Mp3tag gibt es leider kein Symbol, das eine leere Zeichenkette darstellt.
Was leer ist, das existiert nicht oder wird einfach nicht geschrieben.
$replace('1+1','+',)
... das Ergebnis ist '11'
Gelegentlich sieht man in einem Skriptausdruck den Platzhalter %DUMMY%.
Dabei muss man darauf achten, dass in der gerade bearbeiteten Datei ein Tagfeld mit dem Namen DUMMY nicht vorhanden ist, denn sonst wird der in DUMMY gespeicherte Inhalt verwendet.
Ein sinnvoller passabler Skriptausdruck ist ...
$replace('1+1','+',$char(0))
... das Ergebnis ist '11'
... wobei tatsächlich/vermutlich das eine Zeichen hex 00 erzeugt wird, ...
was als Ende einer Zeichenkette interpretiert wird, ...
und somit eine leere Zeichenkette darstellt.
Wenn man in einem Skriptausdruck dem Leser deutlich machen will, dass an einer bestimmten Stelle das blanke 'Nichts' ist, dann kann man dort schreiben $char(0).
Wie ich in meiner post #3, betreffend deine post #1, bereits durch das Nachvollziehen des von dir angebotenen Skripting-Beispiels nachgewiesen habe, so funktioniert der Skriptausdruck nicht zufriedenstellend, ...
... es sei denn, es soll mit Absicht tatsächlich Murks dabei herauskommen.
Oder wende ich den Skriptausdruck nur an einer falschen Stelle im Mp3tag an?
Hm, ja, jetzt verstehe ich etwas mehr, es geht um die Konstruktion von Dateinamen mit dem Konverter "Tag -Dateiname", das hast du ja auch schon in post #1 gesagt.
In der Tat gelingt es mit diesem Konverter, und mit dem fehlerhaften Skriptcode ...
... tatsächlich ein brauchbares Ergebnis zu erzwingen.
Warum funktioniert das mit dem Konverter "Tag -Dateiname" und an anderer Stelle im Mp3tag nicht?
Die Erklärung ist relativ einfach.
Im Dateisystem gelten bestimmte Regeln für die Erzeugung von Dateinamen.
Zum Beispiel sind diese Zeichen verboten: < > ? " : | \ / *
Mp3tag ist deshalb so schlau und passt auf, dass verbotene Zeichen erst gar nicht im Dateisystem ankommen.
Mp3tag bügelt also ohne irgendeine Meldung die möglichen Eingabefehler des Anwenders aus, und entfernt automatisch z. B. die doppelten Anführungszeichen aus dem zu erzeugenden Dateinamen.
Dadurch dass der Konverter "Tag - Dateiname" die Eingabefehler automatisch entfernt, so wird trotzdem die Eingabe-Zeichenkette nicht nachträglich gültig, sondern bleibt fehlerhafter Code.
Ich empfehle deshalb, den Vorschlag aus post #1 für den eigenen Bedarf nicht zu verwenden.
Es gibt viele Orte in Mp3tag, wo man einen Skriptausdruck benutzen kann (z. B. Aktionen, Konverter, Export, Tool-Parameter).
Wenn ich einen Skriptausdruck entwickeln und ausprobieren will, dann benutze ich den Konverter "Tag - Tag", weil der eine Vorschau Anzeige hat.