Feldnamen aufgrund einer Bedingung ausleeren


#1

ich habe alle meine MP3s mit folgenden Filenamen generiert, z.B.

(101) Why Did You Do It - Stretch (20 Jahre U4).mp3 -> also (TrackNr.) Titel – Interpret (Album).mp3

ich generiere die Tracknummer 3-stellig wenn ein Album aus mehreren CDs besteht, wobei dann die 1. Stelle die Disc-Nummer ist, und 2-stellige wenn das Album nur aus einer CD besteht. Ich habe eine Aktion erstellt die aus dem Dateinamen das DISCNUMBER-Tag automatisch befuellt, und zwar setzt der Ausdruck bei 3-stelligen Tracknummern die erste Ziffer der Tracknummer als DISCNUMBER, bei 2-stelligen Tracknummern immer "1". Der Ausdruck schaut so aus, und funktioniert problemlos:

DISCNUMBER: $if($eql($strchr(%_filename%,')'),4),1,$right($left(%_filename%,2),1))

jetzt wuerde ich aber gerne bei 2-stelligen Tracknummern nicht "1" reinschreiben, sondern gar nichts, und noch dazu das Tag DISCNUMBER leeren falls schon was drinsteht, und das schaffe ich in dem Ausdruck nicht. Hat wer eine Idee dazu? Die Moeglichkeit in der Aktionsgruppe vorher noch eine Aktion einzufuegen die das Feld immer leert besteht sicher, gefaellt mir aber nicht, da bei jedem Durchlauf durch viele MP3s jedesmal das Tag 2x geschrieben wird - kostet Zeit und ist "unschoen"?

danke fuer die Hilfe, lG Gerald


#2

Das ist nicht richtig. Per Aktiongruppe wird der ID-Tag nur einmal geschrieben, und zwar mit dem Endergebnis. Der Rest findet im Arbeitspeicher statt.


#3

vielen Dank fuer den Hinweis, das wusste ich nicht! Mittlerweile habe ich aber das Problem selbst loesen koennen, ich habe einfach viel zu kompliziert gedacht :wink: der folgende Ausdruck unterscheidet sich von dem bereits geposteten nur dadurch, dass in der "if"-Abfrage der "then"-Wert (logisch gesehen) einfach ausgelassen wird, und nur der "else"-Wert mit Stringoperationen aus dem Filenamen gebildet ins Tag geschrieben wird - das bewirkt genau das was ich will: das Tag DISCNUMBER wird bei zutreffen von "then" nicht beschrieben, und auch geleert falls schon was drinsteht! - funzt super:

DISCNUMBER: $if($eql($strchr(%_filename%,')'),4),,$right($left(%_filename%,2),1))

danke und lG Gerald