Ich exportiere über eine Aktionengruppe u.a. das embedded Cover in eine Datei "Folder.jpg".
Wenn aber in diesem Ordner bereits eine (alte) Folder.jpg existiert, überschreibt mp3Tag diese leider nicht, sondern legt eine neue "Folder(1).jpg" an (mit dem unschönen Effekt, dass ich manuell die alte "Folder.jpg" löschen und die neue "Folder(1).jpg" wieder in "Folder.jpg" umbennen muss.
(Wie) kann ich das Überschreiben erzwingen?
Zur Sicherheit:
Es handelt sich bei der (alten) "Folder.jpg" weder um eine schreibgeschützte noch eine versteckte Datei... und die Option "Duplikate exportieren" ist DEaktiviert...
Ich meine, dass immer dann eine folder(x) angelegt wird, wenn die schon vorhandene Datei nicht mit der kommenden übereinstimmt. So gehen keine Daten verloren.
Duplikate nicht erzeugen bezieht sich auf die Ausgabe von einer Cover-Datei pro ausgewählter Datei.
Wenn in diesen ausgewählten Dateien sich die eingebetteten Bilder unterscheiden, werden auch etsprechende folder(x)-Dateien angelegt.
Als einzigen Ausweg sehe ich im Moment, zuvor im Explorer nach folder.jpg zu suchen und die dann gefundenen zu löschen.
Alternativ ginge ein Kommando in der EIngabeaufforderung: del /s folder.jpg
@ohrenkino, Danke Dir, das deckt sich mit meinen Beobachtungen, es passiert dann, wenn die Inhalte nicht übereinstimmen. Und ja, der Sinn ist mir klar, ich "will" den aber bewusst overrulen können und hoffte, es gibt da einen Parameter oder Schalter für. Vielleicht eine Anregung für eine Verbesserung für @Florian ?
"zu Fuß löschen" funktioniert natürlich, ist aber gefühlt doppelter Aufwand. In der Praxis lade ich mir einen Satz Alben (meistens einen "kompletten Interpreten" o.ä.) in mp3tag, hole über Deezer oder AppleMusic fehlende Felder (Komponist, Texter und eben auch neue Cover, meine alten habe ich vor 20 Jahren beim Rippen in 300x300 gespeichert ) und starte die "Bereinigungslöufe" (Trennzeichen, Groß-/Kleinschreibung etc. über Skripte und Aktionsgruppen". Da ist es dann unpraktisch und eine Fehlerquelle, bei jedem Alber zunächst in den Ordner zu gehen und manuell die Folder.jpg zu löschen - um sie evtl. nachher wieder herzustellen, wenn das Album bei Deezer nicht gefunden (was z.B. bei Best of Alben oder Samplern häufig vorkommt)...
Du könntest die folder.jpg auch nur vor Deinem Deezer/AppleMusic-Lauf umbenennen (statt zu löschen). Das geht mit einer CMD-Batch-Datei auch rekursiv für verschiedene Unterverzeichnisse.
Benötigst Du in Einzelfällen doch wieder das bisherige umbenannte_folder.jpg wäre es mit einem weiteren CMD-Batch einfach, den Original-Namen wiederherzustellen.
Oder den Cover-Import um die Variante für umbenannte_folder.jpg zu erweitern.
Ja, klar, die Umgehungslösungen beherrsche ich glaube ich recht gut. Ich such(t)e allerdings eine "One Click"-Lösung innerhalb von mp3tag und das Umbenennen und Löschen von Dateien (jenseits der *.mp3) beherrscht mp3tag meine ich nicht, oder?
Der Grund ist so simpel wie kompliziert:
Meine Sammlung hat über 1,5 Mio Tracks in ca. 200/250.000 Ordnern. Wenn ich da anfange manuell in einem Ordner auf CMD Ebene rumzuwerkeln, ist das eine Fehlerquelle, die in recht kurzer Zeit für "Huddel" in der Sammlung sorgt, daher möchte ich möglichst alles automatisieren und keine manuellen Eingriffe zulassen
@poster , Danke für den Tipp. Vor 1-2 Jahren suchte ich mal eine Option überflüssige (von mp3tag erstellte) *.txt Dateien zu löschen. Da ging es anscheinend noch nicht...
@poster, ok, Danke noch mal für den Tipp, nun SEHE ich die Files in mp3tag und kann sie auch mit "CTRL+DEL" löschen ... aber auch das erfordert ja wieder manuellen Eingriff, so dass ich nach einem Scripting Befehl suche. Gibt es so etwas wie "DELETE %filename%"?
Doch, das ging schon immer. Ich lasse mir schon seit ewigen Zeiten auch Nicht-Musik-Dateien in Mp3tag anzeigen, damit ich sie auch im Blick habe.
Als Aktion gibt es sowas nicht. RENAME geht auch über eine Aktion "Format Value" für _FILENAME, wenn man vorher z.B. nach folder.jpg filtert.
Man kann solche Befehle aber natürlich in Mp3tag als externe Tools definieren und da auch Batch-Dateien einbinden.
Allerdings halte ich auch das Verwenden einer Batch-Datei ohne direktes Einbinden in Mp3tag nicht für aufwändig. Befehle wie COPY, XCOPY, DELETE, RENAME usw. lassen sich ja auch rekursiv verwenden, d.h. dass ein einmaliger Aufruf aus einem übergeordneten Ordner alle untergeordneten Ordner mit behandelt. Du kannst statt RENAME und DELETE z.B. auch COPY verwenden und die folder.jpg durch den Inhalt von folder(1).jpg auf diesem Wege überschreiben lassen. (copy folder(1).jpg folder.jpg /-Y).
Da gibt es nicht den einen Königsweg sondern viele Wege an die Aufgabe heranzugehen.
Hast Du schon einmal daran gedacht, den Workflow so zu ändern, dass statt eines direkten Einbindens der Cover und anschließendem Exportieren der folder.jpg, zunächst durch die Websource die folder.jpg erzeugt wird und dann durch eine Aktion diese folder.jpg importiert wird? Dazu müsstest Du nur in Datei->Optionen->Tag-Quellen->Dateiname für Album Cover "folder" eintragen und im finalen Websource-Fenster bei Utils "Cover im Verzeichnis speichern" aktivieren.
Der Vorteil dieses Workflows ist, dass Mp3tag beim Speichern des Covers von der Websource - wenn Du es so bestätigst - überhaupt keine folder(1).jpg anlegt sondern die vorhandene folder.jpg überschreibt.
@poster
OT:
... ehrlich gesagt verzweifel ich noch an Deinem Tipp - nein, stop, der Tipp war super, ich verzweifel an mir und meinen "DOS"-Kenntnissen anscheinend.
Wie setze ich copy rekursiv ein?
Im einzelnen Verzeichnis (= Album) läuft es super, sobald ich aber eine Ebene drüber gehe (= Interpret) nicht mehr.
Nach 2 Wochen DOS-Dokumentationen lesen, versuchen über xcopy und robocopy und schalter a la /s ... bin ich scheinbar am Ende meiner Computer-Weisheit angekommen und frage hoffnungsvoll offtopic Dich, wie ich die ganze Sammlung mit dem copy-Befehl durchsuchen kann.
(PS: Die Workflowänderung funktioniert leider nicht - "er" legt beim Websource die Folder.jpg an, wenn er sie dann aber resamplet, legt er ne Folder(1).jpg an...
Du kannst im Utils-Knopf-Menü der Websource festlegen, ob überhaupt eine Datei vom Cover angelegt werden soll.
Wenn das Resamplen ein fester Bestandteil des Arbeitsablaufs ist, wäre ja ggf. der Schritt, die Coverdatei initial anzulegen, überflüssig.
ja, aber das Problem besteht ja eigentlich nicht im Workflow "neuer" Dateien, sondern wenn ich bestehende Dateien überarbeite
(Zur Erklärung: Ich habe 2006 angefangen, meine CD-Sammlung zu "mp3isieren", damals war man = ich teilweise froh, ein 300px Cover zu bekommen. Das liegt dann seit 20 Jahren als Folder.jpg im Ordner (und in der mp3 empbedded) und sieht auf heutigen Tablet/TV Bildschirmen sehr pixelig aus, so dass ich sukzessive diese über neue WebSource Abfragen "aktualisiere". Daher ist es dann egal, ob die WebSource-Abfrage eine Folder.jpg schreibt oder nicht, die ist ja schon da. Die WebSource embedded eine neue in (zB) 1200px . Wenn ich dann aber die Datei mit meinen Aktionen bearbeite (= und die nun embeddete 1200px extrahiere), wird sie eben nicht als Folder.jpg, sondern als Folder(1).jpg extrahiert.
Mein momentaner Workaround ist vor Ausführen der Skripte einmal nen Rechtsklick aufs Cover zu machen und die alte Folder.jpg manuell zu löschen - ist aber ne Arbeitsbeschaffungsmaßnahme und frag mich nicht, wie oft ich das vergesse... )
Copy selbst arbeitet nicht rekursiv. Man müsste das rekursive Verhalten also durch eine Batchdatei nachbilden.
Ich bin da auch nicht so der Experte (ich mache sowas nur alle paar Monate bis Jahre mal und da gibt es hier im Forum wesentlich Versiertere) und poste hier mal eine ungetestete Batchdatei, die Du an Deine konkrete Situation anpassen und unbedingt in einem Testbereich mit separaten Duplikaten testen solltest, ehe Du sie rekursiv auf Deinen ganzen Bestand losschickst.
Die Batchdatei ist nicht für die Toolnutzung von Mp3tag sondern als separate Batchdatei ohne Mp3tag gedacht.
Edit:
Ich habe den Code gelöscht, weil er in der Form nicht dem beabsichtigten Zweck dienen konnte und eventuell andere Forenteilnehmer verwirrt werden. Auch enthielt er Fehler.
Ganz ganz goßes Dankeschön!!
Das war mehr als ich erwarten durfte und schon sehr nah dran (dass das nicht innerhalb mp3Tag geht war mir bewusst, daher hatte ich es auch als "OffTopic" gekennzeichnet.
... leider funktioniert es nach einem ersten Text noch nicht vollständig - ich bastel noch was und melde mich vielleicht nochmal, wenn ich darf...
Ich poste es hier nochmal, falls jemand ein ähnliches Problem hat:
(Ich habe die Folder(n)-Schleife rausgenommen, da es zu 99% nur um "Folder(1).jpg" geht).
@echo off
set "start=M:"
for /R %root% %%D in (.) do (
if exist "%%D\Folder(1).jpg" (
echo Überschreibe: %%D
copy "%%D\Folder(1).jpg" "%%D\Folder.jpg" /Y
)
)
echo Fertig.
pause
Schön dass es für dich jetzt klappt. Normalerweise teste ich immer Vorschläge, die ich hier poste. Diesmal war ich in Eile und schon geht es schief.
Ich hatte wohl meinen eigenen Vorschlag aus dem Thread nicht mehr ganz im Auge und einen partiellen Blackout, der dazu führte, dass ich in meinem Codetext genau den umgekehrten falschen Weg eingeschlagen habe, nämlich das Kopieren von folder.jpg nach folder(n).jpg. Ich habe meinen vorgeschlagenen Code aus dem Beitrag gelöscht, damit nicht Verwirrung aufkommt.
Du hast allerdings einen Fehler von mir übernommen:
Ich hatte die Variable für den Ausgangsordner auf "start" gesetzt, dann allerdings im weiteren Code "root" dafür verwendet. Das solltest Du noch korrigieren.