Cover mit verschieben

Nahezu beliebig, siehe [F] Mp3tag Defekt nach "Tag-Felder entfernen außer ...", nur ein einziges Semikolon sollte es nicht sein.
Man kann aber einen Punkt oder ein Leerzeichen in das Dialogfeld eintragen und der Tag wird komplett entfernt.

DD.20080509.0939.CEST

Es ist besser die Tracknummern NUMERISCH zu prüfen, da es ja auch 1/9 , 2/9 ... 9/9 geben kann. Hier der Link dazu. Vielleicht hat jemand noch Verbesserungen dazu?

... das Gleiche wie mein obiger Vorschlag. Danke für den Hinweis!

Du schreibst "... die Erzeugung eines leeren Transportcontainers, kann erreicht werden, indem man ein Export Skript erstellt mit der einzigen Anweisungszeile $filename(CoverContainer.mp3) Option: Eine Datei pro Verzeichnis."

Ja, und ich brauche eine Möglichkeit NUR in dem %artist%-Ordner eine Transportcontainer-Datei zu erzeugen. Meine Verzeichnisstruktur sieht folgerdemaßen aus:
...\%vorsortierung%\%artist%\%year% - %album%$num(%track%,2). %title%

Wie kann ich da sinnvoll filtern?

Ich habe es mal versucht:

$loop(%artist%)
  ;COPY NUL: _artist.mp3
$loopend()

Es soll bewirken

beginne Wiederholschleife mit Feld %artist% erstem Eintrags

erzeuge mit COPY NUL: _artist.mp3 eine Leerdatei in diesem Verzeichnis

beende die Wiederholschleife mit Feld %artist% letztem Eintrags

warum kommt: Es wurden Informationen aus 12 Dateien verarbeitet und in die Datei "c:\temp\Verify.Album.genre.csv" exportiert?
Was mache ich falsch?

Filter???

Vom Standpunkt der Musikdatei aus liegt der ARTIST Ordner zwei Etagen darüber:
.....

Hmm, irgendwie so etwas ...
$filename(%_folderpath%'....\CoverContainer.mp3',ANSI)$loop(%artist%,1)$loopend()
... oder einfach ...
$filename(%_folderpath%'....\CoverContainer.mp3',ANSI)
... wird eine Datei im Ordner anlegen zwei Etagen über dem Ordner der selektierten Datei.

DD.20120213.0153.CET

Die nächste Variante sieh so aus:

$filename(New export file.txt,utf-8)

$loop(%artist%)
    COPY NUL: _artist.mp3
$loopend()

Ich erhalte "Es wurden Informationen aus 12 Dateien verarbeitet und in die Datei "Z:\m\A\ges\mbaa4\RPJ-Interpr\A\New export file.txt" exportiert." aber keine Leerdateien. Die Option "Eine Datei pro Verzeichnis" habe ich aktiviert.

Irgendwas habe ich da noch nicht verstanden!

Danke für die schnelle Antwort!

Ich bin im Arbeitsverzeichnis Z:\m\A\ges\mbaa4\RPJ-Interpr\A
die Unterverzeichnisse lauten Z:\m\A\ges\mbaa4\RPJ-Interpr\A\%artist%\%album%

Mit

$filename(%_folderpath%'\..\_artist.ipg.mp3',ANSI)$loop(%artist%,1)$loopend()

bekomme ich als Fehlermeldung
Es wurden Informationen aus 12 Dateien verarbeitet und in die Datei "Z:\m\A\ges\mbaa4\RPJ-Interpr\A\New export file.txt" exportiert.
Und als Text-Datei
$filename(Z:\m\A\ges\mbaa4\RPJ-Interpr\A\Andersen, Arild & Ralph Towner, Nana Vascocelos\1993 - If you Look Far Enough\\.._artist.ipg.mp3,ANSI)
aber nicht die gewünschten Null-Byte-Dateien pro Verzeichnis.

Ich bin im Arbeitverzeichnis Z:\m\A\ges\mbaa4\RPJ-Interpr\A
Meine Verzeichnisstruktur sieht folgerdermaßen aus:
Z:\m\A\ges\mbaa4\RPJ-Interpr\A\%artist%\%year% - %album%\%track%. %title%
Ich möchte in jedem %artist%-Ordner eine Null-Byte-Datei namens _artist.jpg.mp3 anlegen.

$loop(%artist%,1)
   COPY NUL: _artist.mp3
$loopend()

führt nicht zum gewünschten Ergebnis. Der DOS-Befehl COPY NUL: _artist.mp3 erzeugt die Null-Byte-Datei, aber eben nur in dem aktuellen Verzeichnis.
Ich brauche aber die Schleifenfunktion, damit in JEDEM %artist%-Ordner diese Datei erzeugt wird.

$filename(%_folderpath%'\..\..\CoverContainer.mp3',ANSI)$loop(%artist%,1)$loopend()

funktioniert ebensowenig.

? ? ? Sorry, kein weiterer Kommentar, das ist mir zu verwirrt.

DD.20120213.0815.CET

Manfred, wie du weißt, kann Mp3tag mit jedem Exportskript nur eine einzige Ausgabe Textdatei erzeugen.
Der Name dieser Textdatei kann bestimmt werden mit der Funktion $filename().
Der Name kann ein einfaches Literal sein, ...
z. B. $filename('Meine neue Textdatei.txt',ANSI),
... oder mit Hilfe anderer Mp3tag Funktionen oder Platzhalter zusammengesetzt sein, ...
z. B. $filename('Liste - '%ARTIST%'.txt',UTF-8).

Die Ausgabe eines Mp3tag Export Skripts kann man so gestalten, dass es wie ein Kommandoskript für eine andere Anwendung aussieht. So kann man z. B. ein Kommandozeilen Skript (Dateiendung ".cmd") oder ein Visual Basic Script (Dateiendung ".vbs") oder andere textbasierte Skripte mit dem Mp3tag Export erzeugen.

Ein derart erzeugtes Skript kann, soweit die andere Skriptumgebung das leisten kann, dazu benutzt werden, wiederum eine oder mehrere Dateien zu erzeugen, wenn es nach der Erstellung durch den Mp3tag Export "angezeigt" wird, das heißt ausgeführt wird.

Auf der DOS Kommandozeile kann man im Zielordner eingeben ...

COPY NUL: _artist.jpg.mp3

... und man erhält dort eine Null-Byte-Datei ...

2012-02-13 08:35 0 _artist.jpg.mp3

Die Aufgabe, so etwas in vielen Ordnern zu tun, kann man von einem CMD Skript erledigen lassen, dass zuvor von Mp3tag Export erzeugt worden ist.

Der Artist-Ordner liegt über dem Album-Ordner, der die Musikdatei enthält.
Nehmen wir den Standort der Musikdatei als Referenz, das ist der Album-Ordner, so ist der Artist-Ordner eine Ebene darüber im Dateisystem so zu erreichen ...

CD ..

Mp3tag hat eine Systemvariable, die auf den Ordner der Musikdatei zeigt: %_folderpath%
Der Ordner eine Ebene darüber ist mit Hilfe eines Mp3tag CMD Exportskripts so zu erreichen ...

'CD '%_folderpath%'..'

Die Mp3tag CMD Skript Kommandofolge ...

'CD /D '%_folderpath%'..' 'COPY NUL: _artist.jpg.mp3'

... erzeugt in jedem Zielordner eine Null-Byte Datei.

Nun setzt man das in ein Schleifenkonstrukt und lässt es so oft ausführen wie einzigartige Artisten vorhanden sind, denn jeder Artist hat ja seinen eigenen Ordner, in dem die neue leere Datei erzeugt werden soll ...

$loop(%ARTIST%,1) ... $loopend

Und weil man nicht jede Musikdatei anfassen muss, in diesem Fall reicht es, nur eine anzufassen, beschränken wir das mit einer weiteren Schleifenanweisung ...

$loop(%_filename%,1) ... $loopend()

Alles zusammengebaut sieht das so aus ...

01: $filename($getEnv('USERPROFILE')'\Desktop\CreateNullByteDummyFiles.cmd',ANSI)

02: '@ECHO OFF'
03: 'ECHO.[%~n]'
04: 'ECHO.####################################'
05: 'ECHO.# #'
06: 'ECHO.# Create Null Byte Dummy Files #'
07: 'ECHO.# #'
08: 'ECHO.####################################'
09: 'ECHO.'
10: 'ECHO.Press [Ctrl+C] to cancel or [Enter] to continue ...'
11: 'PAUSE >NUL'
12: 'SET DF=_artist.jpg.mp3'
13: 'SET HF=%USERPROFILE%\Desktop<!--colorc-->'
14: 'SET LF=%HF%LogFile.CNBDF.txt'
15: 'CD /D "%HF%"'
16: 'DEL "%LF%" >NUL 2>&1'
17: 'ECHO.'
18: $loop(%ARTIST%,1)$loop(%_filename%,1)
19: 'ECHO.File : "'%_folderpath%'..\%DF%"'
20: 'ECHO.File : "'%_folderpath%'..\%DF%" >>"%LF%" 2>&1'
21: 'CD /D "'%_folderpath%'.."'
22: 'ECHO.Folder: "%CD%"'
23: 'ECHO.Folder: "%CD%" >>"%LF%" 2>&1'
24: 'ECHO.'
25: 'REM DEL "%DF%" >>"%LF%" 2>&1'
26: 'COPY NUL: "%DF%"'
27: 'DIR -P/A/N/O:GNE "%DF%"|FIND "%DF%" >>"%LF%" 2>&1'
28: 'ECHO.>>"%LF%" 2>&1'
29: 'ECHO.'
30: 'ECHO.'
31: $loopend()$loopend()
32: 'CD /D "%HF%"'
33: 'ECHO.'
34: 'ECHO.Ready.'
35: 'ECHO.'
36: 'ECHO.Press [Enter] to continue ...'
37: 'PAUSE >NUL'
38: 'START "LogFile" "%LF%"'
39: ':EOB'
40: 'REM ©Detlev Dalitz.20120213.2020.'


(Zeilennummern vor dem Gebrauch entfernen!)

20120213.CreateNullByteDummyFiles.mte (1.1 KB)

DD.20120213.1016.CET
Edit.DD.20120213.1700.CET
Edit.DD.20120213.2027.CET

20120213.CreateNullByteDummyFiles.mte (1.1 KB)

Hallo Detlev,
danke für die ausführliche Antwort. Erst durch Deine Erläuterung habe ich überhaupt verstanden, wie die Verfahrensweise ist. Trotzdem bin ich nicht klar gekommen.

Ich fasse zusammen:

Ich bin im Arbeitverzeichnis Z:\m\A\ges\mbaa4\RPJ-Interpr\A
Meine Verzeichnisstruktur sieht folgerdermaßen aus:
Z:\m\A\ges\mbaa4\RPJ-Interpr\A\%artist%\%year% - %album%\%track%. %title%
Ich möchte in jedem %artist%-Ordner eine Null-Byte-Datei namens _artist.jpg.mp3 anlegen.

Ich starte mit Export Deine mte-Datei Create Null Byte Dummy Files.
[Ich habe einen Filter gesetzt, der immer nur 1 mp3-Datei pro Album zuläßt. War wahrscheinlich gar nicht notwendig, weil es ja im Script heißt: $loop(%ARTIST%,1)$loop(%_filename%,1)]
Diese erzeugt folgende CMD-Datei (Ausschnitt)

... 
ECHO.File  : Z:^\m^\A^\ges^\mbaa4^\RPJ-Interpr^\A^\Accept^\1979 - Accept^\..^\..^\_artist.jpg.mp3
CD /D Z:\m\A\ges\mbaa4\RPJ-Interpr\A\Accept\1979 - Accept\..\..\
ECHO.Folder: %CD%
ECHO.
REM DEL _artist.jpg.mp3
COPY NUL: _artist.jpg.mp3
ECHO.
ECHO.

ECHO.File  : Z:^\m^\A^\ges^\mbaa4^\RPJ-Interpr^\A^\AC-DC^\2003 - Live ^(Collector's Edition^), CD 2^\..^\..^\_artist.jpg.mp3
CD /D Z:\m\A\ges\mbaa4\RPJ-Interpr\A\AC-DC\2003 - Live (Collector's Edition), CD 2\..\..\
ECHO.Folder: %CD%
ECHO.
REM DEL _artist.jpg.mp3
COPY NUL: _artist.jpg.mp3
ECHO.
ECHO.

ECHO.File  : Z:^\m^\A^\ges^\mbaa4^\RPJ-Interpr^\A^\AC-DC^\2005 - Family Jewels, CD 2^\..^\..^\_artist.jpg.mp3
CD /D Z:\m\A\ges\mbaa4\RPJ-Interpr\A\AC-DC\2005 - Family Jewels, CD 2\..\..\
ECHO.Folder: %CD%
ECHO.
REM DEL _artist.jpg.mp3
COPY NUL: _artist.jpg.mp3
ECHO.
ECHO.
...

Die erzeugte CMD-Datei wird ausgeführt.

... 
Press [Ctrl+C] to cancel or [Enter] to continue ...

File  : Z:\m\A\ges\mbaa4\RPJ-Interpr\A\Accept\1979 - Accept\..\..\_artist.jpg.mp
3
Folder: Z:\m\A\ges\mbaa4\RPJ-Interpr\A

        1 Datei(en) kopiert.


File  : Z:\m\A\ges\mbaa4\RPJ-Interpr\A\AC-DC\2003 - Live (Collector's Edition),
CD 2\..\..\_artist.jpg.mp3
Folder: Z:\m\A\ges\mbaa4\RPJ-Interpr\A

        1 Datei(en) kopiert.


File  : Z:\m\A\ges\mbaa4\RPJ-Interpr\A\AC-DC\2005 - Family Jewels, CD 2\..\..\_a
rtist.jpg.mp3
Folder: Z:\m\A\ges\mbaa4\RPJ-Interpr\A

        1 Datei(en) kopiert.
...

Ich erhalte immer wieder die Null-Byte-Datei an der gleichen Stelle, aber nicht im %artist%-Ordner.

... 
Z:\m\A\ges\mbaa4\RPJ-Interpr>dir _artist.jpg.mp3 /s
 Datenträger in Laufwerk Z: ist Medien
 Volumeseriennummer: 4FA8-09CF

 Verzeichnis von Z:\m\A\ges\mbaa4\RPJ-Interpr\A

13.02.2012  14:58                 0 _artist.jpg.mp3
               1 Datei(en)              0 Bytes

     Anzahl der angezeigten Dateien:
               1 Datei(en)              0 Bytes
               0 Verzeichnis(se), 991.133.171.712 Bytes frei

Was mache ich falsch?

PS.:
Z:\m\A\ges\mbaa4\RPJ-Interpr\A ist nur das "Übungsverzeichnis". Wenn es läuft soll in jedem %artist%-Ordner unterhalb von
Z:\m\A\ges\mbaa4\RPJ-Interpr die Datei _artist.jpg.mp3 geschrieben werden.

Der %ARTIST%-Ordner liegt IMMER zwei Ebenen über den Musikdateien. Auch wenn sich also die Ebene des Arbeitsverzeichnisses (das ist NICHT die Systemvariable %_folderpath%) ändert, braucht Dein Mp3tag-Export-Skript NICHT geändert werden?

Offensichtlich habe ich mich bei den Dateisystem-Ebenen verrechnet.
Zwei logische Ebenen über der Musikdatei bedeutet genausoviel wie eine physikalische Ebene über dem Ordner, auf den die Mp3tag Variable %_folderpath% zeigt, und in dem sich die Datei tatsächlich befindet.

Also muss man im Mp3tag Export Skript ersetzen ... von: ....</b> nach: ..</b>
Also nicht zwei Ebenen aufwärts, sondern nur eine Ebene.

Die Änderung ist jetzt in meinem Beitrag zuvor und in der MTE Datei enthalten.
Danke für den Hinweis.

DD.20120213.1655.CET

Ich habe zu Danken. Die Änderung läuft gerade. Mal sehen, ob ...
Ja, es funktioniert ...
... fast.

Ich habe das Script mal in einem anderen Arbeitverzeichnis Z:\m\A\ges\mbaa5\RPJ-Interpr gestartet und CMD ausgeführt.

Z:\m\A\ges\mbaa5\RPJ-Interpr\D>dir _artist.jpg.mp3 /s
 Datenträger in Laufwerk Z: ist Medien
 Verzeichnis von Z:\m\A\ges\mbaa5\RPJ-Interpr\D\Doors
13.02.2012  17:28                 0 _artist.jpg.mp3
 Verzeichnis von Z:\m\A\ges\mbaa5\RPJ-Interpr\D\Dylan, Bob
13.02.2012  17:28                 0 _artist.jpg.mp3
 Verzeichnis von Z:\m\A\ges\mbaa5\RPJ-Interpr\D\Driscoll, Julie
13.02.2012  17:28                 0 _artist.jpg.mp3
 Verzeichnis von Z:\m\A\ges\mbaa5\RPJ-Interpr\D\Domino, Fats
13.02.2012  17:28                 0 _artist.jpg.mp3
     Anzahl der angezeigten Dateien:
               4 Datei(en)              0 Bytes...

Das Verzeichnis von Z:\m\A\ges\mbaa5\RPJ-Interpr\D enthält 7 %artist%-Ordner, aber nur in 4 wurde die Null-Byte-Datei geschrieben.
Domino, Fats
Doors
Driscoll, Julie
Driscoll, Julie & Brian Auger
Driscoll, Julie & Brian Auger and the Trinity
Dylan, Bob
Dylan, Bob & The Band
Kann diese Unregelmäßigkeit auf das "&"-Zeichen beruhen?

Nachtrag: Ja es ist so! Wenn ein "&"-Zeichen in %artist% steht, wird keine Null-Byte-Datei geschrieben.

Hmm ja, Flüchtigkeitsfehler und nicht ausreichend getestet.
So, die letzte Version habe ich eben hochgeladen.
Ich hoffe nur, der ganze Aufwand hat sich gelohnt (für dich und für mich).

DD.20120213.2032.CET

Ja, der Aufwand hat sich sicher gelohnt. Dein Script ist schon Stunden im Einsatz (und kein Fehler festgestellt). Danke für die Hilfe. Das hätte ich allein nie hinbekommen.

Leider ist da doch noch eine Kleinigkeit. Ich habe meine Sammlung von A bis B bereits abgearbeitet. Dabei ist mir aufgefallen, dass bei
Amon Düül II
Björk
Blue Öyster Cult
Bonfá, Luiz & Maria Toledo, Stan Getz</i>
keine Null-Byte-Dateien geschrieben wurden. Ich vermute es liegt an den Sonderzeichen. Wo muss ich Änderungen vornehmen?

Sonderzeichen wie z. B. deutsche Umlaute werden durch die Landeseinstellungen in DOS und Windows nicht immer gleich aussehend dargestellt.
Im deutschen DOS wird gewöhnlich die Codepage 850 verwendet.
Sonderzeichen aus Windows werden auf der DOS Ebene passabel mit der Codepage 1252 dargestellt.
Der DOS Befehl ist:
CHCP
Wechselt die aktuelle Codepage oder zeigt deren Nummer an.
CHCP [nnn]
nnn Die Nummer einer Codepage.
Der Befehl CHCP ohne Parameter zeigt die Nummer der aktuellen Codepage an.

Du kannst mit den Befehlen CHCP 850 und CHCP 1252 experimentieren und, eingesetzt an den passenden Stellen im Commandline Script, damit vielleicht ein brauchbares Hin- und Herschalten zwischen den Codepages erreichen.

Siehe dazu auch diesen Thread ...
/t/11448/1

DD.20120215.0600.CET

... hat leider nicht weitergeholfen. Ich muss also die Artist mit ÖÜÄ manuel nachtragen.