# Filterausdruck für Vergleich Filename/Track

**URL:** <https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089>\
**Category:** Allgemein\
**Created:** [July 6, 2016, 4:49am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089 "2016-07-06T04:49:12Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 6, 2016, 4:49am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/1 "2016-07-06T04:49:12Z")

</div>

Ich bin dabei meinen MP3-Bestand auf Fehler durchzusehen und komme bei Filterausdrücken nicht weiter, die mir dabei helfen sollen.

Die Dateinamen haben das Format: $num(%track%,2) - %artist% - %title%.  
%track% ist nach folgendem Muster gefüllt: 01/14 oder 001/100

Ich will die Dateien angezeigt bekommen, bei denen die Dateinamen nicht dem Namensmuster entsprechen, also

- die Ziffern von %track% vor dem "/ " nicht mit demTrackteil des Dateinamens
- %artist% nicht mit dem Interpretenteil des Dateinamens
- %title% nicht mit dem Titelteil des Dateinamens  
wobei das aus praktikablen Gründen 3 verschiedene Filtern sein dürfen und auch sollten.

Eine einfache Lösung durch komplettes Neubenennen durch eine Aktion verbietet sich, da ich wegen der sich ergebenden zu langen Dateinamen in etlichen Fällen gezwungen war Titel und/oder Artist zwar nicht im Tag aber beim Dateinamen zu kürzen. Es ist also eine Inaugenscheinnahme vor Korrekturen erforderlich.

---

<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:** [July 8, 2016, 4:16pm UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/2 "2016-07-08T16:16:35Z")

</div>

> [@poster](#):
>
> ...  
> Die Dateinamen haben das Format: $num(%track%,2) - %artist% - %title%.  
> %track% ist nach folgendem Muster gefüllt: 01/14 oder 001/100  
> ...

Du kannst doch %\_filename% und den String zum Erzeugen miteinander vergleichen. Alle Treffer haben dann irgendwo ne Macke:

'$if($eql(%\_filename%,'$num(%track%,2) - %artist% - %title%'),1,0)' IS '0'

Du kriegst allerdings damit keine Anzeige "Nummer stimmt nicht" oder so was.

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 9, 2016, 2:41am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/3 "2016-07-09T02:41:39Z")

</div>

> [@ohrenkino](#):
>
> Du kannst doch %\_filename% und den String zum Erzeugen miteinander vergleichen. Alle Treffer haben dann irgendwo ne Macke:
> 
> '$if($eql(%\_filename%,'$num(%track%,2) - %artist% - %title%'),1,0)' IS '0'
> 
> Du kriegst allerdings damit keine Anzeige "Nummer stimmt nicht" oder so was.

Danke Ohrenkino.  
Irgendwie hatte ich wohl ein Brett vorm Kopf. Allerdings stehe ich ohnehin mit Anführungszeichen (ob doppelt oder einfach oder gar nicht) in Filterausdrücken auf dem Kriegsfuß.

Jetzt taucht leider das Problem der in Dateinamen verbotenen Zeichen auf, d.h. überall wo im Titel z.B. ein Fragezeichen steht, bekomme ich falsche Treffer. Funktioniert eigentlich $validate() in Filterausdrücken nicht? Irgendwie klappt es nicht, wenn ich es wie folgt verwende

"$if($eql(%\_filename%,'$validate($num(%track%,2) - %artist% - %title%')),1,0)" IS 0

---

<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:** [July 9, 2016, 7:01am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/4 "2016-07-09T07:01:05Z")

</div>

> [@poster](#):
>
> ...  
> "$if($eql(%\_filename%,'$validate($num(%track%,2) - %artist% - %title%')),1,0)" IS 0

Ist da nicht das letzte ' zu früh dran und muss hinter die Klammer?

"$if($eql(%\_filename%,'$validate($num(%track%,2) - %artist% - %title%)'),1,0)" IS 0

Dann kannst du bei $validate() ja auch noch das Ersetzungszeichen definieren. Ist das vielleicht nicht nur "weglassen", sondern ggf. ein "\_"?

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 9, 2016, 7:46am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/5 "2016-07-09T07:46:33Z")

</div>

> [@ohrenkino](#):
>
> Ist da nicht das letzte ' zu früh dran und muss hinter die Klammer?

Ja. Ich sagte ja, ich stehe mit den Dingern auf Kriegsfuß. 😉

Allerdings funktioniert es mit den einfachen Anführungszeichen überhaupt nicht.

Funktioniert (ohne einfaches Anführungszeichen):  
"$if($eql(%\_filename%,$num(%track%,2) - %artist% - %title%),1,0)" IS 0

Funktioniert nicht:  
"$if($eql(%\_filename%,'$num(%track%,2) - %artist% - %title%'),1,0)" IS 0  
"$if($eql(%\_filename%,'$validate($num(%track%,2) - %artist% - %title%)'),1,0)" IS 0  
"$if($eql(%\_filename%,$validate($num(%track%,2) - %artist% - %title%)),1,0)" IS 0

> [@](#):
>
> Dann kannst du bei $validate() ja auch noch das Ersetzungszeichen definieren. Ist das vielleicht nicht nur "weglassen", sondern ggf. ein "\_"?

Nein. Ich teste es ja gerade mit einem Album, wo in einem Titel-Tag am Ende ein Fragezeichen steht und das im Dateinamen einfach nur weggelassen wurde. Es ist kein Leerzeichen im Spiel.

---

<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:** [July 9, 2016, 8:17am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/6 "2016-07-09T08:17:28Z")

</div>

> [@poster](#):
>
> ... Allerdings funktioniert es mit den einfachen Anführungszeichen überhaupt nicht. ...

Was in einfache Apostrophzeichen eingefasst ist, daraus wird reiner Text.

Das funktioniert doch, oder ...?  
"$if($eql(%\_filename%,$num(%track%,3)' - '%artist%' - '%title%),1,0)" IS "1''

DD.20160709.1217.CEST

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 9, 2016, 8:39am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/7 "2016-07-09T08:39:21Z")

</div>

> [@DetlevD](#):
>
> Was in einfache Apostrophzeichen eingefasst ist, daraus wird reiner Text.
> 
> Das funktioniert doch, oder ...?  
> "$if($eql(%\_filename%,$num(%track%,3)' - '%artist%' - '%title%),1,0)" IS "1''
> 
> DD.20160709.1217.CEST

Danke für die Erklärung.  
Das hier funktioniert:  
"$if($eql(%\_filename%,$num(%track%, **2** )' - '%artist%' - '%title%),1,0)" IS "0"

$num(track%,2) deckt sowohl Fälle mit zweiziffrigen als auch dreiziffrigen Tracknummern ab.

Allerdings kann man wohl $validate() zusätzlich im Filter nicht verwenden?

---

<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:** [July 9, 2016, 8:54am UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/8 "2016-07-09T08:54:14Z")

</div>

> [@poster](#):
>
> ... Allerdings kann man wohl $validate() zusätzlich im Filter nicht verwenden?

"Doppelt gemoppelt" könnte man schreiben ...  
"$if($eql($validate(%_filename%,'_'),$validate($num(%track%,3)' - '%artist%' - '%title%,'\_')),1,0)" IS "1"

Aber weil ein existierender Dateiname bereits valide ist, geht es auch kürzer ...  
"$if($eql(%_filename%,$validate($num(%track%,3)' - '%artist%' - '%title%,'_')),1,0)" IS "1"  
... oder ...  
"$if($eql(%\_filename%,$validate($num(%track%,3)' - '%artist%' - '%title%,)),1,0)" IS "1"

Die Frage ist, welche Art von Validierung der Dateiname zuvor erhalten hat, ...  
wurden ungültige Zeichen ersetzt oder gelöscht?

DD.20160709.1254.CEST

---

<div class="post-metadata">

**Author:** ![poster](https://community.mp3tag.de/user_avatar/community.mp3tag.de/poster/32/4881_2.png) [@poster](https://community.mp3tag.de/u/poster)\
**Post date:** [July 9, 2016, 1:01pm UTC](https://community.mp3tag.de/t/filterausdruck-fur-vergleich-filename-track/18089/9 "2016-07-09T13:01:12Z")

</div>

> [@DetlevD](#):
>
> wurden ungültige Zeichen ersetzt oder gelöscht?

Sie wurden gelöscht.  
Vielen Dank für deine hilfe.

Meine Fehlversuche mit $validate() wurden durch ein fehlendes Komma hinter %title% hervorgerufen.
