# Dateinamenformat

**URL:** https://community.mp3tag.de/t/dateinamenformat/15670
**Category:** Allgemein
**Created:** [April 20, 2014, 8:34pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670 "2014-04-20T20:34:00Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 20, 2014, 8:34pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/1 "2014-04-20T20:34:00Z")

</div>

Hi,

Ich würd euch gern mal zeigen wie ich von den Tags meinen Dateinamen zusammenstellen lasse:

$if(%artist%,%artist%" - ","")$if(%album%,%album%" - ","")$ifgreater(%track%,9,$sub(%track%,/%_%)". ",$if(%track%,"0"$sub(%track%,/%_%)". ",""))%title%

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.

MFG  
Torben

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [April 21, 2014, 7:00am UTC](https://community.mp3tag.de/t/dateinamenformat/15670/2 "2014-04-21T07:00:01Z")

</div>

> [@Torben1](#):
>
> Hi...  
> $if(%artist%,%artist%" - ","")$if(%album%,%album%" - ","")$ifgreater(%track%,9,$sub(%track%,/%_%)". ",$if(%track%,"0"$sub(%track%,/%_%)". ",""))%title%  
> ...

Kennst du die besondere Funktion der eckigen Klammern für den Konverter Tag-Dateiname?  
eine $if-Konstruktion kannst du mit  
[%artist% -]  
abkürzen.

Da auch ein führender Bindestrich möglich ist, was ich als Dateinamen seltsam finde.

Die Funktion $num(%track%,2) würde eine Zahl auf 2 Stellen auffüllen und wäre ggf. kürzer als die $ifgreater Abfrage.

Also ich würde für ein ähnliches Ergebnis es so tun:  
[%artist% -][%album% -][$num(%track%,2).]%title%

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 21, 2014, 7:50am UTC](https://community.mp3tag.de/t/dateinamenformat/15670/3 "2014-04-21T07:50:27Z")

</div>

> [@Torben1](#):
>
> Hi, Ich würd euch gern mal zeigen wie ich von den Tags meinen Dateinamen zusammenstellen lasse:  
> $if(%artist%,%artist%" - ","")$if(%album%,%album%" - ","")$ifgreater(%track%,9,$sub(%track%,/%_%)". ",$if(%track%,"0"$sub(%track%,/%_%)". ",""))%title%  
> Der Formatiert den Dateinamen nach "Künstler - Album - Tracknr. Titel"  
> ... 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 ...

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.

1. 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?

2. Warum benutzt du das Doppel-Apostroph, wenn doch in Mp3tag das Einfach-Apostroph eine Zeichenkette begrenzt?

3. Warum benutzt du zwei Doppel-Apostrophe (""), was willst du damit bewirken?

4. 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_

Siehe auch ...  
[Share your custom Actions](https://community.mp3tag.de/t/1722/33)

DD.20140421.1150.CEST

---

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 29, 2014, 12:21pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/4 "2014-04-29T12:21:52Z")

</div>

> [@DetlevD](#):
>
> 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.
> 
> 1. 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?
> 
> 2. Warum benutzt du das Doppel-Apostroph, wenn doch in Mp3tag das Einfach-Apostroph eine Zeichenkette begrenzt?
> 
> 3. Warum benutzt du zwei Doppel-Apostrophe (""), was willst du damit bewirken?
> 
> 4. 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_
> 
> Siehe auch ...  
> [Share your custom Actions](https://community.mp3tag.de/t/1722/33)
> 
> DD.20140421.1150.CEST

danke

%\_% 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%

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 29, 2014, 2:11pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/5 "2014-04-29T14:11:16Z")

</div>

> [@Torben1](#):
>
> %\_% 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. ...

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.

> [@Torben1](#):
>
> doppel apostrophe haben bei mir immer genauso funktioniert wie einfache.

Das kann ich nicht glauben.

> [@Torben1](#):
>
> Mit zwei von denen wollte ich eine leere Zeichenkette einfügen.

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)**.

DD.20140429.1811.CEST

---

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 29, 2014, 2:16pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/6 "2014-04-29T14:16:24Z")

</div>

> [@DetlevD](#):
>
> Das kann ich nicht glauben.

Hat es aber. Vielleicht ist bei mir auch einfach irgendwas kaputt oder so oder es ist weil ich nicht die aktuellste version hab. (2.54)

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 29, 2014, 2:22pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/7 "2014-04-29T14:22:49Z")

</div>

> [@Torben1](#):
>
> Hat es aber. Vielleicht ist bei mir auch einfach irgendwas kaputt oder so oder es ist weil ich nicht die aktuellste version hab. (2.54)

Bitte zeige Skript-Beispiele ...  
... die das einfache Apostroph (') (single quote)  
... die das doppelte Anführungszeichen (") (double quote)  
verwenden.

Bitte erkläre wie diese Funktion arbeitet ...  
$sub(x,y) ... subtrahiert y von x und liefert das Ergebnis

... konkret bei diesem Ausdruck:  
$sub(%track%,/%\_%)

DD.20140429.1822.CEST

---

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 29, 2014, 2:40pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/8 "2014-04-29T14:40:39Z")

</div>

> [@DetlevD](#):
>
> Bitte zeige Beispiele.
> 
> DD.20140429.1822.CEST

Die Beispiele die ich ganz oben genannt habe hab ich damit generiert

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 29, 2014, 2:50pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/9 "2014-04-29T14:50:06Z")

</div>

> [@Torben1](#):
>
> Die Beispiele die ich ganz oben genannt habe hab ich damit generiert

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?

DD.20140429.1850.CEST

---

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 29, 2014, 3:20pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/10 "2014-04-29T15:20:06Z")

</div>

> [@DetlevD](#):
>
> 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?
> 
> DD.20140429.1850.CEST

Ich drück auf einen belibigen Song und geh dann in der Leiste oben auf das Symbol "Tag-Dateiname". Ist was etwa nicht wie man es normalerweise macht?

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 29, 2014, 4:22pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/11 "2014-04-29T16:22:23Z")

</div>

> [@Torben1](#):
>
> Ich drück auf einen belibigen Song und geh dann in der Leiste oben auf das Symbol "Tag-Dateiname". Ist was etwa nicht wie man es normalerweise macht?

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 ...

**$if(%ARTIST%,%ARTIST%" - ","")$if(%ALBUM%,%ALBUM%" - ","")$ifgreater(%TRACK%,9,$sub(%TRACK%,/%\_%)". ",$if(%TRACK%,"0"$sub(%TRACK%,/%\_%)". ",""))%TITLE%**

... 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.

Siehe auch ...  
[Wieder mal RegEx ....](https://community.mp3tag.de/t/3648/3)  
[Gesamtanzahl der Tracks wird nicht richtig augelesen](https://community.mp3tag.de/t/13423/3)  
[[F] $validate() broken?](https://community.mp3tag.de/t/8311/12)

DD.20140429.2022.CEST

---

<div class="post-metadata">

### Author: ![Torben1](https://community.mp3tag.de/user_avatar/community.mp3tag.de/torben1/32/435_2.png) [@Torben1](https://community.mp3tag.de/u/Torben1)
#### Post date: [April 29, 2014, 8:34pm UTC](https://community.mp3tag.de/t/dateinamenformat/15670/12 "2014-04-29T20:34:04Z")

</div>

ok danke.

Wo gibst du denn immer scripte ein?

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [April 30, 2014, 3:30am UTC](https://community.mp3tag.de/t/dateinamenformat/15670/13 "2014-04-30T03:30:01Z")

</div>

> [@Torben1](#):
>
> ok danke. Wo gibst du denn immer scripte ein?

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.

Du kannst diesen Skriptausdruck ausprobieren ...

**$if2($trim([%ARTIST%][' - '%ALBUM%][' - '$num(%TRACK%,2)'.'][' '%TITLE%],' -'),$num(%\_counter%,2)' - Unknown')**

DD.20140430.0730.CEST
