MP3-Dateien gemäss ihres Namens in bestehende Ordner verteilen, in denen der Interpret des zu verschiebenden Songs vorhanden ist
Hallo Leute
ich bin neu hier.
Auf der Suche im Google bin ich mehrere Male auf euer offensichtlich tolles Forum gestossen.
Leider habe ich in den bereits vorhandenen Beiträgen noch keine Antwort für meinen "Fall" gefunden.
Andere kompetente Lösungen konnte ich leider nicht gemäss meinen Vorgaben anpassen.
Mein Problem ist, dass ich etwa 2'200 MP3 in einem Download-Ordner habe, die ich aber möglichst automatisiert verteilen, also in andere, bereits bestehende Musik-Ordner einordnen will.
Mein bestehendes Musik-Archiv sieht in seiner Ordnerstruktur etwa wie folgt aus:
(Sorry für die Formatierung - die Ordner rechts sind jeweils Unterordner vom darüberliegenden, mehr links stehenden Ordner)
M:\MEDIA
|_PHOTOS
|_MOVIES
|_MUSIC
|_MP3
|_ALTERNATIVE
|_ROCK
|_OLDIES
|_R'n'B / SOUL
|_REGGAE
|_HOUSE
|_ usw.
In diesen diversen "Genre-Ordnern", die ich mir vor langer Zeit angelegt habe (keine Genre-ID3-Tags), befinden sich die bereits vorhandenen und entsprechend der Musikrichtung abgelegten Musikdateien (ohne Unterordner "ALBUM X123").
Nun möchte ich die heruntergeladenen und säuberlich nach Schema [Interpret - Titel.mp3] beschrifteten MP3-Musikstücke vom Download-Ordner in die oben dargestellten Genre-Ordner verschieben.
D:\DOWNLOADS
|_NEUE MP3
|_ToCheck
|_INTERPRET1 - SONG1.mp3
|_INTERPRET1 - SONG2.mp3
|_INTERPRET2 - SONG1.mp3
|_INTERPRET2 - SONG2.mp3
|_INTERPRET2 - SONG3.mp3
|_INTERPRET3 - SONG1.mp3
|_INTERPRET4 - SONG1.mp3
|_INTERPRET4 - SONG2.mp3
|_usw.
Dabei soll jeweils geprüft werden, ob der entsprechende Interpret, des aus dem Download-Ordner zu verschiebenden Songs, bereits in einem Genre Ordner vorkommt und diese Datei vom Download-Ordner in genau jenen Genre-Ordner verschoben werden.
Es kann im Musikarchiv vorkommen, dass der selbe Interpret in verschiedenen Genre-Ordnern, also mehr als 1x vorkommt, da ich das bisher alles manuell verschoben habe und dabei darauf geachtet habe, in welchen Musikstil-Ordner das Stück wohl besser passt.
Genial wäre es dann natürlich schon, wenn man in solchen Fällen eine Auswahlmöglichkeit hätte oder zumindest in einem Logfile die potenziellen Genre-Ordner benannt werden und man sich diese Interpreten danach noch manuell vornehmen kann. Ich könnt aber auch damit leben, wenn die neuen MP3 jeweils in den ersten gefundenen Genre-Ordner verschoben werden. Meist ist es vom selben Interpreten ja auch die ähnliche Stilrichtung.
So, bissen viel auf einmal, aber ich hoffe ich konnte exakt erklären, was mich plagt und hoffe so auf einen Crack, der mir weiterhilft.
Dankeschön schon mal im Voraus, eine schöne besinnliche Weihnachtszeit und einen Ordentlichen Rutsch ins neue Jahr
Prosit! (...don't drink and drive!)
RazorJack
ich bin neu hier.
Auf der Suche im Google bin ich mehrere Male auf euer offensichtlich tolles Forum gestossen.
Leider habe ich in den bereits vorhandenen Beiträgen noch keine Antwort für meinen "Fall" gefunden.
Andere kompetente Lösungen konnte ich leider nicht gemäss meinen Vorgaben anpassen.
Mein Problem ist, dass ich etwa 2'200 MP3 in einem Download-Ordner habe, die ich aber möglichst automatisiert verteilen, also in andere, bereits bestehende Musik-Ordner einordnen will.
Mein bestehendes Musik-Archiv sieht in seiner Ordnerstruktur etwa wie folgt aus:
(Sorry für die Formatierung - die Ordner rechts sind jeweils Unterordner vom darüberliegenden, mehr links stehenden Ordner)
M:\MEDIA
|_PHOTOS
|_MOVIES
|_MUSIC
|_MP3
|_ALTERNATIVE
|_ROCK
|_OLDIES
|_R'n'B / SOUL
|_REGGAE
|_HOUSE
|_ usw.
In diesen diversen "Genre-Ordnern", die ich mir vor langer Zeit angelegt habe (keine Genre-ID3-Tags), befinden sich die bereits vorhandenen und entsprechend der Musikrichtung abgelegten Musikdateien (ohne Unterordner "ALBUM X123").
Nun möchte ich die heruntergeladenen und säuberlich nach Schema [Interpret - Titel.mp3] beschrifteten MP3-Musikstücke vom Download-Ordner in die oben dargestellten Genre-Ordner verschieben.
D:\DOWNLOADS
|_NEUE MP3
|_ToCheck
|_INTERPRET1 - SONG1.mp3
|_INTERPRET1 - SONG2.mp3
|_INTERPRET2 - SONG1.mp3
|_INTERPRET2 - SONG2.mp3
|_INTERPRET2 - SONG3.mp3
|_INTERPRET3 - SONG1.mp3
|_INTERPRET4 - SONG1.mp3
|_INTERPRET4 - SONG2.mp3
|_usw.
Dabei soll jeweils geprüft werden, ob der entsprechende Interpret, des aus dem Download-Ordner zu verschiebenden Songs, bereits in einem Genre Ordner vorkommt und diese Datei vom Download-Ordner in genau jenen Genre-Ordner verschoben werden.
Es kann im Musikarchiv vorkommen, dass der selbe Interpret in verschiedenen Genre-Ordnern, also mehr als 1x vorkommt, da ich das bisher alles manuell verschoben habe und dabei darauf geachtet habe, in welchen Musikstil-Ordner das Stück wohl besser passt.
Genial wäre es dann natürlich schon, wenn man in solchen Fällen eine Auswahlmöglichkeit hätte oder zumindest in einem Logfile die potenziellen Genre-Ordner benannt werden und man sich diese Interpreten danach noch manuell vornehmen kann. Ich könnt aber auch damit leben, wenn die neuen MP3 jeweils in den ersten gefundenen Genre-Ordner verschoben werden. Meist ist es vom selben Interpreten ja auch die ähnliche Stilrichtung.
So, bissen viel auf einmal, aber ich hoffe ich konnte exakt erklären, was mich plagt und hoffe so auf einen Crack, der mir weiterhilft.
Dankeschön schon mal im Voraus, eine schöne besinnliche Weihnachtszeit und einen Ordentlichen Rutsch ins neue Jahr
Prosit! (...don't drink and drive!)
RazorJack
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132232
Url: https://administrator.de/contentid/132232
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
9 Kommentare
Neuester Kommentar
Hallo RazorJack und willkommen im Forum, hallo Snowman25!
Zum Testen die "Billigvariante" nach dem Motto "ab in den ersten passenden Ordner":
Das "echo" vor dem "move" sorgt dafür, dass noch nicht wirklich verschoben, sondern der entsprechende Befehl nur angezeigt wird. Für jede Datei wird außerdem ein Eintrag in eine Logdatei erstellt und Letztere am Ende mit dem Editor geöffnet.
Grüße
bastla
Zum Testen die "Billigvariante" nach dem Motto "ab in den ersten passenden Ordner":
@echo off & setlocal
set "Quelle=D:\DOWNLOAD\NEUE MP3\ToCheck"
set "Ziel=M:\MEDIA\MUSIC\MP3"
set "Log=D:\Log.txt"
set "Liste=%temp%\MP3Liste.txt"
dir "%Ziel%\*.mp3" /s /b>%Liste%
if exist "%Log%" del "%Log%"
for %%i in ("%Quelle%\*.mp3") do set "DName=%%~ni" & call :ProcessFile "%%i"
notepad "%Log%"
goto :eof
:ProcessFile
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a"
set "Ordner="
for /f "delims=" %%a in ('findstr /i /c:"\\%Interpret% - " %Liste% 2^>nul') do if not defined Ordner set "Ordner=%%~dpa"
if not defined Ordner >>"%Log%" echo %~nx1: Noch kein Titel von %Interpret% vorhanden! & goto :eof
echo move %1 "%Ordner%"
>>"%Log%" echo %~nx1 --^> %Ordner:~,-1%
goto :eof
Grüße
bastla
Hallo Zusammen.
@bastla
Wieder was gelernt. Das:
hätte ich ungleich komplizierter gelöst, da ich nicht damit gerechnet hätte, dass die Ersetzung zur Laufzeit der Zeile bereits wirksam ist.
@RazorJack
Sinvoll ist meiner Meinung nach, wenn du das ganze in zwei Stepps durchführst.
- Im ersten Step erstellst du eine leicht zu editierende Vorschrift, wie mit jeder Datei vorzugehen ist. Falls dir Excel zur Verfügung steht, würde sich eine *.csv Datei anbieten. Hier sind Semikolons als Separatoren gesetzt und Excel ist standardmäßig mit diesem Dateityp verknüpft. Somit lassen sich Zuordnungen im Vorfeld noch ändern, bzw. für noch nicht vorhandene Interpreten hinzufügen.
- Im zweiten Step wird diese Datei wieder ausgelesen und das Verschieben der Dateien vorgenommen.
bastla's Batchscript lässt sich relativ einfach dahingehend erweitern.
Vorsicht ist bei der Verwendung von Batches für solche Vorhaben immer geboten, wenn du dir nicht sicher bist, ob Sonderzeichen der Kommandozeile (zB. & oder %) im Dateinamen vorkommen. Diese führen zu Fehlern in der Abarbeitung.
Grüße
rubberman
@bastla
Wieder was gelernt. Das:
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a"
@RazorJack
Sinvoll ist meiner Meinung nach, wenn du das ganze in zwei Stepps durchführst.
- Im ersten Step erstellst du eine leicht zu editierende Vorschrift, wie mit jeder Datei vorzugehen ist. Falls dir Excel zur Verfügung steht, würde sich eine *.csv Datei anbieten. Hier sind Semikolons als Separatoren gesetzt und Excel ist standardmäßig mit diesem Dateityp verknüpft. Somit lassen sich Zuordnungen im Vorfeld noch ändern, bzw. für noch nicht vorhandene Interpreten hinzufügen.
- Im zweiten Step wird diese Datei wieder ausgelesen und das Verschieben der Dateien vorgenommen.
bastla's Batchscript lässt sich relativ einfach dahingehend erweitern.
Vorsicht ist bei der Verwendung von Batches für solche Vorhaben immer geboten, wenn du dir nicht sicher bist, ob Sonderzeichen der Kommandozeile (zB. & oder %) im Dateinamen vorkommen. Diese führen zu Fehlern in der Abarbeitung.
Grüße
rubberman
[OT]
Moin RazorJack,
willkommen im Forum.
An der Lösungsverfeinerung will ich mich gar nicht beteiligen dieses Mal.
Aber an dieser Stelle und weil in diesem Thread alle mitlesen, die ich erreichen will
Danke dir, RazorJack für die vorbildliche Frage- und Titelformulierung und die klare Beschreibung der Anforderung.
So sehen leider nicht viele [Erst-]Beiträge aus.
Frohe Festtage und ein gutes nächstes Jahr
Biber
[/OT]
Moin RazorJack,
willkommen im Forum.
An der Lösungsverfeinerung will ich mich gar nicht beteiligen dieses Mal.
Aber an dieser Stelle und weil in diesem Thread alle mitlesen, die ich erreichen will
Danke dir, RazorJack für die vorbildliche Frage- und Titelformulierung und die klare Beschreibung der Anforderung.
So sehen leider nicht viele [Erst-]Beiträge aus.
Frohe Festtage und ein gutes nächstes Jahr
Biber
[/OT]
Hallo RazorJack!
Auch von mir eine Gratulation zu der Art Deiner Fragestellung und Rückmeldung!
Soferne Du mit dem einen oder anderen Anführungszeichen im Logfile leben kannst, sollte diese Version des Batches etwas robuster hinsichtlich Sonderzeichen sein und zusätzlich auch Unterordner des Quellordners abdecken (weshalb dann im Logfile der gesamte Pfad ausgegeben wird):
@all
Die besten Weihnachtswünsche, und, falls wir uns vorher nicht mehr lesen sollten: Alles Gute für 2010!
Grüße
bastla
Auch von mir eine Gratulation zu der Art Deiner Fragestellung und Rückmeldung!
Soferne Du mit dem einen oder anderen Anführungszeichen im Logfile leben kannst, sollte diese Version des Batches etwas robuster hinsichtlich Sonderzeichen sein und zusätzlich auch Unterordner des Quellordners abdecken (weshalb dann im Logfile der gesamte Pfad ausgegeben wird):
@echo off & setlocal
set "Quelle=T:\DOWNLOADS\ToCheck"
set "Ziel=M:\Music\MP3\Other\TEST"
set "Log=T:\DOWNLOADS\ToCheck\Log.txt"
set "Liste=%temp%\MP3Liste.txt"
dir "%Ziel%\*.mp3" /s /b>%Liste%
if exist "%Log%" del "%Log%"
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.mp3" 2^>nul') do set "DName=%%~ni" & call :ProcessFile "%%i"
notepad "%Log%"
goto :eof
:ProcessFile
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a"
set "Ordner="
for /f "delims=" %%a in ('findstr /c:"\\%Interpret% - " %Liste% 2^>nul') do if not defined Ordner set "Ordner=%%~dpa"
if not defined Ordner >>"%Log%" echo %1: Noch kein Titel von "%Interpret%" vorhanden! & goto :eof
echo move %1 "%Ordner%"
>>"%Log%" echo %1 --^> "%Ordner:~,-1%"
goto :eof
Die besten Weihnachtswünsche, und, falls wir uns vorher nicht mehr lesen sollten: Alles Gute für 2010!
Grüße
bastla