Hilfe beim Formel setzen

Guten Morgen Allerseits!

Bräuchte etwas Hilfe beim Formel setzen.

Bisjetzt sieht mein String so aus, es soll eine dreifach Abfrage werden.

$if($if(%album%,,Diverse Einzel-Titel),$if(%album%,Alben,),$if($eql(%band%,various),Sampler,))

Abgefragt werden soll:

  • Wenn in der Spalte Album nichts steht soll der Ordner "Diverse Einzel-Titel" generiert werden.
  • Wenn in der Spalte Album etwas steht soll der Ordner "Alben" generiert werden.
  • Wenn in der Spalte Band "various" steht soll der Ordner "Sampler" generiert werden.

Für Alben und Sampler wird der Ordner erstellt, nur für Diverse Einzel-Titel wird nichts generiert.
Wo liegt mein fehler?

Hmm, vielleicht funktioniert dieser Ausdruck?
$if($eql(%band%,various),Sampler,$if(%album%,Alben,Diverse Einzel-Titel))

... oder sind das nicht zwei voneinander unabhängige Fälle?
%band% vs. %album%

DD.20090707.0950.CEST

.

Hallo DetlevD, hallo @ all!

Dank Deiner Hilfe, habe ich meinen ultimativen Verteiler-String geschaffen :smiley: am Ende hätte ich noch ein paar Fragen.

Der String funktioniert nur, wenn die Dateien richtig getaggt sind.
Meine Struktur sollte wie folgt aussehen, was ich letztendlich auch geschafft habe:

Alben
-A-Z
--Interpret
---Band - Album (anz. CD's) (Album Jahr)
---Album (CD Nummer)
----[Track] Interpret ... Titel

Diverse Einzel-Titel
-Qualität VBR
--Sprache
---Erstveröffentlichungs-Jahr vom Titel
----Interpret ... Titel

Sampler
-Album (anz. CD's) (Album Jahr)
-Album (CD Nummer)
--[Track] Interpret ... Titel

Soweit so gut! nun meine Fragen:

  1. Es soll wenn in der Spalte Sprache "german" steht, ein Ordner "deutsch" generiert werden, bei einer anderen Sprache "ausland", wobei dieser dann wieder in den einzelnen Sprachen unterteilt ist.
    Mein Problem ist es, dass teilweise unter Sprache auch mal "german instrumental" steht, wenn das der Fall ist, soll er in den Ordner "deutsch" einsortiert werden. Wie bekomme ich das hin??

  2. Ist es möglich einem Formatstring einen festen Wert zuzuweisen? Wenn ja, wie bekomme ich das gebacken?
    z.b.: wenn ich im String %origfilename% eingebe, soll immer "G:\Musikarchiv" ausgegeben werden, ohne dies im File zu speichern.

Hier nun mal mein kompletter Verteiler-String (geht der evtl. kürzer?) :rolleyes:

%origfilename%\$if($eql(%band%,various),Sampler,$if(%album%,Alben,Diverse Einzel-Titel$if(%album%,,\\%_bitrate% kBit''s %_vbr%)\$if2($if($eql(%language%,german),deutsch,ausland)$if(%album%,,)$if($eql(%language%,german),,\\%language%),# unbekannte Sprache #))$if2($if($and(%track%,%album%),,\$left(%year_song%,3)x\\%year_song%),\# unbekanntes jahr #)$if($eql(%band%,various),,$if($eql(%band%,),,\$upper($if($isdigit($left(%artist%,1)),# NUM #,$left(%artist%,1)\\%artist%\))$caps(%band%,'(' ) - )))$if($eql(%band%,various),\$caps(%album%,'(' ),$caps(%album%,'(' ))$if(%totaldiscs%, (%totaldiscs% CD''s),)$if(%year%, (%year%),)$if(%discnumber%,\$caps(%album%,'(' ) (CD $num(%discnumber%,2)),)\$if(%track%,'['$num(%track%,3)']' ,)$caps(%artist% ... %title%,'(' )

Hallo Ponscho! Na prima!

Hmm ... das ist doch immer so und Grundvoraussetzung.

$if($eql(%SPALTESPRACHE%,'german'),'deutsch,'ausland')

... ersetze %origfilename% mit 'G:\Musikarchiv', dann hast du den 'festen Wert' im Formatstring.

... ansonsten ein temporäres Tagfeld anlegen "MEIN_ORDNER" oder so und mit 'G:\Musikarchiv' füllen, dann %origfilename% mit %MEIN_ORDNER% im Formatstring ersetzen.
Das Tagfeld "MEIN_ORDNER" kann später im Bearbeitungsprozess gelöscht werden.

Aber sinnvoll klingt das nicht: 'G:\Musikarchiv' und %origfilename%.
Das passt irgendwie von der Bedeutung her nicht zusammen.

Hauptsache, es kommt dabei das heraus, was du dir gewünscht hast.
Ob mit einem kürzeren Formatstring eine Millisekunde Verarbeitungszeit eingespart wird oder nicht, das ist in diesem Kontext völlig unerheblich.

DD.20090716.1430.CEST

o.k. da habe ich meine Frage wohl falsch formuliert :slight_smile:

Diese Formel habe ich ja schon soweit verbaut, nur komme ich nicht drauf wie Wortanhänge (z.b. german instrumental) in den selben Ordner "deutsch" wandern, da ja german drin vorkommt.

Habe es schon mit $geql und mit "*" probiert, komme aber nicht zum gewünschten Ergebnis

Als Ansatz:

$if($eql($regexp(%tagfeld%,(.)(german)(.),$2),german),deutsch,ausland)

Hallo newser,

kannst Du mir das mit dem regexp mal erklären, habe das nie wirklich verstanden.
Vorallem in welchen Teil meiner Formel setze ich das ein? im vorderen, oder im hinteren Teil, oder sogar in beiden Teilen die für german zuständig sind?

Der Teil aus meiner Formel, der für die Sprache zuständig ist

$if2($if($eql(%language%,german),deutsch,ausland)$if(%album%,,)$if($eql(%language%,german),,\\%language%),# unbekannte Sprache #))
  • soll bewirken, wenn in Spalte Sprache "german" steht der ordner deutsch erstellt wird.
  • wenn eine ander Sprache, Ordner = ausland, dieser wird wieder in den einzelnen Sprachen unterteilt.
  • wenn bei Sprache nichts steht, ensteht der Ordner # unbekannt #

Nun habe ich aber auch bei Sprache "german instrumental" stehen, diese datei wird dann in den Ordner ausland verschoben, soll aber in den Ordner deutsch.
Bei den ausländischen Songs ist das egal.

He Ponscho, du beschäftigst dich doch intensiv mit den Mp3tag Skriptbefehlen.
Hast du dir schon einen Eindruck verschafft welche Skriptbefehle es gibt (siehe Hilfe/Skriptbefehle)?
Wenn du diese Hilfeseite vor Augen hast, dann schaue nach bei den String-Funktionen, ob du dort vielleicht etwas Passendes findest, weil du ja mit der Syntax von regulären Ausdrücken noch nicht so vertraut bist.
Im Prinzip kannst du alle Programmieranforderungen in Mp3tag auch mit den traditionellen Funktionen erledigen, das Beherrschen von regulärer Ausdrücken wäre dann die 'hohe Kunst'.

Also ... an die Hand genommen ...

Gegeben ist die Zeichenkette 'german instrumental'.

Wo steht das Reizwort 'german' in der Zeichenkette?
Links.

Wie lang ist das Wort?
6 Zeichen.

Welche String-Funktion kann angewendet werden?
$left(x,n) liefert die ersten n Zeichen der Zeichenkette x.

$if($eql($left(%SPALTESPRACHE%,6),'german'),'deutsch','ausland')

Fertig.
Das ist doch eigentlich gar nicht so schwer.

DD.20090717.1152.CEST

Hallo DetlevD,

danke für den kleinen Schubser :wink:
Zuerst dachte ich mir, was will er mit left , es gibt ja noch andere Sprachen mit 6 zeichen,
aber mit etwas Überlegung hat's geschnakelt.