# Disc- u. Tracknummer aus Dateiname

**URL:** <https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160>\
**Category:** Allgemein\
**Created:** [November 25, 2012, 6:24pm UTC](https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160 "2012-11-25T18:24:21Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![JensP](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/j/a698b9/32.png) [@JensP](https://community.mp3tag.de/u/JensP)\
**Post date:** [November 25, 2012, 6:24pm UTC](https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160/1 "2012-11-25T18:24:21Z")

</div>

Hallo zusammen,

ich habe mir Aktion zusammengestellt um aus den Dateiname die Disk- u. Tracknummer zu holen. Und zwar sehen die Dateien z.B. wie folgt aus:

1.23. Test  
02. Test  
3-34 Test  
005 Test  
043. Test  
100. Test  
205 Test  
Test

Dabei werden dann alle Zahlen bis Einhundert als Track angesehen und über Einhundert wird die erste Stelle als Discnummer und die letzten zwei Stellen als Tracknummer angesehen. Dabei werden auch Trennzeichen zwischen Disc- u. Tracknummer berücksichtigt.

Meine bisherige Aktion sieht dazu wie folgt aus:

```
[#0]
T=5
F=TEMPTRACK
1=$if($isdigit($left(%_filename%,1)),$left(%_filename%,4),)

[#1]
T=5
F=TEMPTRACK
1=$replace(%temptrack%,-,,.,, ,,_,)

[#2]
T=5
F=TRACK
1=$if($less(%temptrack%,101),%temptrack%,$mid(%temptrack%,2,2))

[#3]
T=5
F=DISCNUMBER
1=$if($grtr(%temptrack%,100),$left(%temptrack%,1),)

[#4]
T=9
F=TEMPTRACK

```

Da ich ein freund von kompakteren Codes bin, würde ich gerne wissen, ob es noch möglich ist, diesen etwas zu verkleinern mit gleichen Ergebnis.

Liebe Grüße  
Jens

---

<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:** [November 25, 2012, 6:45pm UTC](https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160/2 "2012-11-25T18:45:30Z")

</div>

Also mindestens für die Zahlen, die kein Trennzeichen haben kannst du die Discnumber und die tracknumber mit jeweils einer einfachen Division erhalten:

$div(%temptrck%,100) liefert die Ganzzahl (also bei 234 die "2") und

$mod(%temptrack%,100) liefert den Rest (also bei 234 "34").

Damit entfällt die Abfrage mit ifgrtr und so.  
Wenn du nun noch die Trennzeichen in temptrack wegwirfst vielleicht mit Aktion  
"Ersetzen mit Regulärem Ausdruck"  
^(\d+).(\d\*)  
Ersetzen mit  
$1$2

Dann wären das nur noch 3 Schritte.

---

<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:** [March 5, 2015, 8:15pm UTC](https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160/3 "2015-03-05T20:15:24Z")

</div>

> [@JensP](#):
>
> Hallo zusammen, ... Da ich ein freund von kompakteren Codes bin, würde ich gerne wissen, ob es noch möglich ist, diesen etwas zu verkleinern mit gleichen Ergebnis. Liebe Grüße Jens

**Mein Vorschlag ... ist nicht kompakter ... ... weil Einzelschritte besser nachvollzogen werden können. 1. How to get Discnumber and Tracknumber from Filename? Tracknumber and Discnumber are coded in the leading group of digits. Tracknumber has max. 2 digits from 1 to 99. Discnumber has max. 2 digits from 1 to 99. If Discnumber is prepended, then Tracknumber must have two digits. Possible number formats: DDTT, DTT, TT, T. Testfiles: 1.23 Test.mp3 02. Test.mp3 3-34 Test.mp3 005 Test.mp3 043. Test.mp3 100. Test.mp3 205 Test.mp3 Test.mp3 2. Get filename, check for leading digit, remove trailing text. TMP\_TRACK \<== $if($isdigit($left(%\_filename%,1)),$regexp(%\_filename%,'^(.+?)[.\_-].\*$','$1'),) 1.23 02. 3-34 005 043. 100. 205 3. Remove non digit characters. TMP\_TRACK \<== $replace(%TMP\_TRACK%,'.',,'\_',,'-',,' ',) 123 02 334 005 043 100 205 4. Justify right. TMP\_TRACK \<== $right('0000'%TMP\_TRACK%,4) 0123 0002 0334 0005 0043 0100 0205 5. Get Discnumber DISCNUMBER \<== $trimLeft($div(%TMP\_TRACK%,100),'0') 6. Get Tracknumber TRACK \<== $trimLeft($mod(%TMP\_TRACK%,100),'0') 7. Remove temporary track field. TMP\_TRACK \<== $char(0) Result: 123** 

**```
 <!--coloro:#000000--><span style="color:#000000"><!--/coloro-->2<!--colorc--></span><!--/colorc-->** 

**```**

 **334** 

**```
 <!--coloro:#000000--><span style="color:#000000"><!--/coloro-->5<!--colorc--></span><!--/colorc--> 
<!--coloro:#000000--><span style="color:#000000"><!--/coloro-->43<!--colorc--></span><!--/colorc-->** 

**```**

 **1 25 Ready.**

DD.20150305.2215.CET

---

<div class="post-metadata">

**Author:** ![JensP](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/j/a698b9/32.png) [@JensP](https://community.mp3tag.de/u/JensP)\
**Post date:** [March 5, 2015, 8:37pm UTC](https://community.mp3tag.de/t/disc-u-tracknummer-aus-dateiname/14160/4 "2015-03-05T20:37:22Z")

</div>

> [@DetlevD](#):
>
> Mein Vorschlag ... ist nicht kompakter ...  
> ... weil Einzelschritte besser nachvollzogen werden können.[/color]

Hi DetlevD,

super, ich hätte nie gedacht, dass du noch antwortest. Bisher hatte ich tatsächlich immer noch Probleme mit meiner Lösung.

Vielen Lieben Dank. Du bist immer eine große Hilfe. Auch schon damals beim [Remix in eckige Klammern setzen](https://community.mp3tag.de/t/15254/1).
