Jetzt weiß ich es selbst bald nicht mehr, was richtig und was falsch ist, ob der Arbeitsordner von Mp3tag so großen Einfluss auf die Operationen hat oder nicht usw.
Also ist die Zeit gekommen für ein systematisches Beispiel.
- Beispiel
Es gibt diesen Ordnerbaum mit den Dateien:
"O:\TEST\T1\T2\T3\T4\41.mp3"
"O:\TEST\T1\T2\T3\T4\42.mp3"
Der Mp3tag Arbeitsordner ist:
"O:\TEST\T1"
Wir fassen die erste Datei an, und bestimmen mit _DIRECTORY einen neuen Heimatordner für diese (und alle weiteren Dateien im selben Ordner) z. B. "A\B":
Tagfeld formatieren: _DIRECTORY
Formatstring: A\B\
Das Ergebnis ist:
"O:\TEST\T1\T2\T3\A\B\41.mp3"
"O:\TEST\T1\T2\T3\A\B\42.mp3"
So weit so gut, der Mp3tag Arbeitsordner hat keinen schlechten Einfluss auf die Operation genommen. Relative Änderungen mit _DIRECTORY beziehen sich also auf den Heimatordner der angefassten Datei.
Es reicht, eine einzige Datei anzufassen!
Wenn mehrere Dateien selektiert sind, dann überspringt Mp3tag alle weiteren Dateien, denn das Ergebnis ist ja schon nach der ersten Datei vorhanden.
Jetzt wollen wir im Ordner O:\TEST\T1\T2\T3\A\B\ zwei neue Ordner mit den Namen CD1 und CD2 anlegen und verschieben gleichzeitig die zugehörigen Dateien (die ungeraden Nummern nach CD1 und die geraden Nummern nach CD2):
Tagfeld formatieren: _FILENAME
Formatstring: $if($odd(%_FILENAME%),'CD1','CD2')%_FILENAME%
Dabei würde ein Fehler passieren:
"O:\TEST\T1\T2\T3\A\B\41.mp3" ->
"O:\TEST\T1\CD1\41.mp3"
Hier kommt nun der Arbeitsordner von Mp3tag ins Spiel.
Entweder man benutzt jetzt einen absoluten Pfad mit _FILENAME:
Tagfeld formatieren: _FILENAME
Formatstring: 'O:\TEST\T1\T2\T3\A\B'$if($odd(%_FILENAME%),'CD1','CD2')%_FILENAME%
... oder man baut sich einen "relativen Differenzpfad" zusammen, der sich auf den Arbeitsordner von Mp3tag bezieht:
Tagfeld formatieren: _FILENAME
Formatstring: $replace($replace(%_PATH%,%_WORKINGPATH%,),%_FILENAME_EXT%,)$if($odd(%_FILENAME%),'CD1','CD2')%_FILENAME%
An anderen Stellen in Mp3tag (Tools, Export) kann man die Systemvariable %_FOLDERPATH_REL% ("relativer Differenzpfad") benutzen, nur hier nicht!
Der Vorgang soll sein:
"O:\TEST\T1\T2\T3\A\B\41.mp3" ->
"O:\TEST\T1\T2\T3\A\B\CD1\41.mp3"
und
"O:\TEST\T1\T2\T3\A\B\42.mp3" ->
"O:\TEST\T1\T2\T3\A\B\CD2\42.mp3"
Wenn man jede Datei einzeln anfasst, also die Verschiebeaktion zweimal ausführt, dann erhalten wir das vorstehende Ergebnis, also zwei neue Unterordner CD1 und CD2, die jeweils die zugehörige Datei enthalten.
Wenn man mit einem "frisch gestarteten Mp3tag"(!) die Verschiebeaktion einmal gegen beide selektierten Dateien ausführt, dann erscheint die positive Meldung "2 von 2 Dateien wurden umbenannt".
"O:\TEST\T1\T2\T3\A\B\CD1\41.mp3"
"O:\TEST\T1\T2\T3\A\B\CD2\42.mp3"
Es sieht so aus, als ob alles gut funktioniert.
- Beispiel
Nun das Beispiel, das zum Fehler führt:
"Fehler beim Verschieben der Datei oder des Ordners."
"CD1 kann nicht verschoben werden: Der Ziel und der Quellordner sind identisch."
Es gibt diesen Ordnerbaum mit den Dateien:
"O:\TEST\T1\T2\T3\T4\41.mp3"
"O:\TEST\T1\T2\T3\T4\42.mp3"
Mp3tag starten.
Der Mp3tag Arbeitsordner ist:
"O:\TEST\T1"
Wir selektieren beide Dateien, und bestimmen mit _DIRECTORY einen neuen Heimatordner für die Dateien z. B. "A\B":
Tagfeld formatieren: _DIRECTORY
Formatstring: A\B\
Das Ergebnis ist:
"O:\TEST\T1\T2\T3\A\B\41.mp3"
"O:\TEST\T1\T2\T3\A\B\42.mp3"
Wir selektieren beide Dateien, und wollen mit _FILENAME und Formatstring die beiden Dateien in die Unterordner CD1 und CD2 verteilen:
Tagfeld formatieren: _FILENAME
Formatstring: $replace($replace(%_PATH%,%_WORKINGPATH%,),%_FILENAME_EXT%,)$if($odd(%_FILENAME%),'CD1','CD2')%_FILENAME%
Diese Aktion wird mit der Fehlermeldung quittiert.
"Fehler beim Verschieben der Datei oder des Ordners."
"CD1 kann nicht verschoben werden: Der Ziel und der Quellordner sind identisch."
Weiter escheint die Quittungsmeldung "Es wurden 1 von 2 Dateien umbenannt."
Das Ergebnis ist:
"O:\TEST\T1\T2\T3\A\B\CD1\41.mp3"
"O:\TEST\T1\T2\T3\A\B\CD1\CD2\42.mp3"
Mp3tag scheint sich nach der Verschiebeaktion mit _DIRECTORY nicht mehr darüber "bewusst zu sein", dass sich durch die Verschiebeaktion mit _DIRECTORY der Pfad verändert hat zu den Dateien.
Die beiden Dateien sind nicht korrekt lokalisiert und die anschließende Verschiebeaktion mit _FILENAME läuft in einen Fehler.
Soweit erst einmal mit den Beispielen.
Übrigens erzeugt Mp3tag beim Rückgängigmachen der Verschiebeaktionen immer einen Abbruch
mit Dump.
Andre ... wie du schon im Post#1 sagtest ...
... das sehe ich jetzt auch so ... also muss Florian eingreifen.
DD.20100407.0812.CEST
Edit.DD.20100417.1932.CEST