Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MP3-Dateien gemäss ihres Namens in bestehende Ordner verteilen, in denen der Interpret des zu verschiebenden Songs vorhanden ist

Frage Entwicklung Batch & Shell

Mitglied: RazorJack

RazorJack (Level 1) - Jetzt verbinden

23.12.2009 um 21:54 Uhr, 6620 Aufrufe, 9 Kommentare, 1 Danke

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
Mitglied: Snowman25
23.12.2009 um 23:06 Uhr
Hallo RazorJack,

dein problem ist ein wenig komplexer als das, was man sonst so antrifft. Sollte aber durchaus per Batch möglich sein...
Ich muss mal schauen, ob ich Zeit dafür finde.

Greetz Snow
Bitte warten ..
Mitglied: bastla
23.12.2009 um 23:15 Uhr
Hallo RazorJack und willkommen im Forum, hallo Snowman25!

Zum Testen die "Billigvariante" nach dem Motto "ab in den ersten passenden Ordner":
01.
@echo off & setlocal 
02.
set "Quelle=D:\DOWNLOAD\NEUE MP3\ToCheck" 
03.
set "Ziel=M:\MEDIA\MUSIC\MP3" 
04.
 
05.
set "Log=D:\Log.txt" 
06.
set "Liste=%temp%\MP3Liste.txt" 
07.
dir "%Ziel%\*.mp3" /s /b>%Liste% 
08.
 
09.
if exist "%Log%" del "%Log%" 
10.
for %%i in ("%Quelle%\*.mp3") do set "DName=%%~ni" & call :ProcessFile "%%i" 
11.
notepad "%Log%" 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a" 
16.
set "Ordner=" 
17.
for /f "delims=" %%a in ('findstr /i /c:"\\%Interpret% - " %Liste% 2^>nul') do if not defined Ordner set "Ordner=%%~dpa" 
18.
if not defined Ordner >>"%Log%" echo %~nx1: Noch kein Titel von %Interpret% vorhanden! & goto :eof 
19.
echo move %1 "%Ordner%" 
20.
>>"%Log%" echo %~nx1 --^> %Ordner:~,-1% 
21.
goto :eof
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
Bitte warten ..
Mitglied: rubberman
24.12.2009 um 01:58 Uhr
Hallo Zusammen.

@bastla
Wieder was gelernt. Das:
01.
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a"
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
Bitte warten ..
Mitglied: RazorJack
24.12.2009 um 10:42 Uhr
Hi bastla, hallo zusammen

Danke für Deinen Lösungsvorschlag und eure Beiträge. Das Script ist schon etwa fünf levels zu hoch für mich, aber ich verstehs zumindest im Ansatz
Ich hab die Pfadangaben entsprechend meiner "Testumgebung" angepasst und hab's gleich ausprobiert:
01.
@echo off & setlocal 
02.
set "Quelle=T:\DOWNLOADS\ToCheck" 
03.
set "Ziel=M:\Music\MP3\Other\TEST" 
04.
 
05.
set "Log=T:\DOWNLOADS\ToCheck\Log.txt" 
06.
set "Liste=%temp%\MP3Liste.txt" 
07.
dir "%Ziel%\*.mp3" /s /b>%Liste% 
08.
 
09.
if exist "%Log%" del "%Log%" 
10.
for %%i in ("%Quelle%\*.mp3") do set "DName=%%~ni" & call :ProcessFile "%%i" 
11.
notepad "%Log%" 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a" 
16.
set "Ordner=" 
17.
for /f "delims=" %%a in ('findstr /i /c:"\\%Interpret% - " %Liste% 2^>nul') do if not defined Ordner set "Ordner=%%~dpa" 
18.
if not defined Ordner >>"%Log%" echo %~nx1: Noch kein Titel von %Interpret% vorhanden! & goto :eof 
19.
echo move %1 "%Ordner%" 
20.
>>"%Log%" echo %~nx1 --^> %Ordner:~,-1% 
21.
goto :eof
Das Script läuft ohne Fehlermeldung durch, führt die move -Aktionen aber wegen des "echo" vor dem "move" in der 3.-untersten Zeile, wie im Lösungsvorschlag erwähnt, nicht durch, sondern blendet zuletzt nur das Logfile ein.
Nach Entfernen des "echo" lief das Script inkl. des Verschiebens der Dateien fehlerfrei durch.

Das generierte Logfile:
Escolate - Happy Hour.mp3 --> M:\Music\MP3\Other\TEST\Jazz 
Fredde Le Grand - Kann Ingen Sorg For Mig Bjorn Borg.mp3 --> M:\Music\MP3\Other\TEST\Jazz 
Freddy Fader Meets Locana - Bom Bom.mp3 --> M:\Music\MP3\Other\TEST\Jazz 
Grooves - Writing On The Wall.mp3 --> M:\Music\MP3\Other\TEST\Pop 
Hypersnap  
Jupiter - Hon E Norsk Och Har Brunt Har.mp3 --> M:\Music\MP3\Other\TEST\Pop 
Kate Ryan - Voyage Voyage.mp3 --> M:\Music\MP3\Other\TEST\Old School 
Sex Appeal - Sensuality.mp3 --> M:\Music\MP3\Other\TEST\Old School 
Tasty - You And Me.mp3 --> M:\Music\MP3\Other\TEST\R'n'B 
Ti-Mo - Put Your Hands Up For New York.mp3 --> M:\Music\MP3\Other\TEST\R'n'B**
In der 5.Zeile des Logfiles (hier visuell in der 7. wegen der Zeilenumbrüche) wäre eigentlich "Hypersnap & Engl - Bass Tonight.mp3" korrekt gewesen. Wie rubberman bereits erwähnt hat, können Sonderzeichen wie "%" oder "&" nicht korrekt erkannt werden. Das ist ein Problem. Ich habe mehrere hundert Songs, in denen das Zeichen "&" vorkommt.
Na gut, wenn es sich nicht anders lösen lässt, würde ich halt vorgängig alle "&" jeweils durch "And" oder "Feat." ersetzen. Mit "Magic File Renamer" ist das in wenigen Minuten gemacht, allerdings wär's mir schon lieber, ich könnt die Namen aus ästethischen Gründen so belassen.

PS: Was ist eigentlich wenn ich im Quellverzeichnis mehrere Ordner habe? Wie kann ich das Script dahingehend abändern, dass vom root aus alle *.mp3 im Hauptquellenordner und Unterordner der Quelle berücksichtigt werden? Oder muss ich das für jeden Unterordner einmal ausführen?

Recht herzlichen Dank nochmals. Dieses Forum rockt!
Bin gespannt auf eure Antworten.

Cheers,
RazorJack

[Edit Biber] Codetags ergänzt. [/Edit]
Bitte warten ..
Mitglied: Biber
24.12.2009 um 11:48 Uhr
[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]
Bitte warten ..
Mitglied: bastla
24.12.2009 um 12:34 Uhr
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):
01.
@echo off & setlocal 
02.
set "Quelle=T:\DOWNLOADS\ToCheck" 
03.
set "Ziel=M:\Music\MP3\Other\TEST" 
04.
 
05.
set "Log=T:\DOWNLOADS\ToCheck\Log.txt" 
06.
set "Liste=%temp%\MP3Liste.txt" 
07.
dir "%Ziel%\*.mp3" /s /b>%Liste% 
08.
 
09.
if exist "%Log%" del "%Log%" 
10.
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.mp3" 2^>nul') do set "DName=%%~ni" & call :ProcessFile "%%i" 
11.
notepad "%Log%" 
12.
goto :eof 
13.
 
14.
:ProcessFile 
15.
for /f "delims=§" %%a in ("%DName: - =§%") do set "Interpret=%%a" 
16.
set "Ordner=" 
17.
for /f "delims=" %%a in ('findstr /c:"\\%Interpret% - " %Liste% 2^>nul') do if not defined Ordner set "Ordner=%%~dpa" 
18.
if not defined Ordner >>"%Log%" echo %1: Noch kein Titel von "%Interpret%" vorhanden! & goto :eof 
19.
echo move %1 "%Ordner%" 
20.
>>"%Log%" echo %1 --^> "%Ordner:~,-1%" 
21.
goto :eof
@All
Die besten Weihnachtswünsche, und, falls wir uns vorher nicht mehr lesen sollten: Alles Gute für 2010!

Grüße
bastla
Bitte warten ..
Mitglied: RazorJack
24.12.2009 um 15:00 Uhr
Hallo nochmal,

bastla, Du hast's wirklich drauf!

Bin grad zu Besuch und wollt nur ma schaun ob ich Antworten gekriegt hab und was seh ich: Du hast Dir nochmals die Mühe gemacht und am Script gearbeitet.

Vielen Herzlichen Dank, auch allen anderen die sich beteiligt haben.
Testen werde ich das ganze nochmal, wenn ich zu hause bin.

Schöne Weihnacht und Guten Rutsch!
Bitte warten ..
Mitglied: RazorJack
06.01.2010 um 20:05 Uhr
So, hallo mal wieder und willkommen im neuen Jahr 2010.

Hab euch nicht vergessen

Brauchte noch etwas Zeit, um einiges zu erledigen und dann endlich den Batch zu testen.
Er funktioniert genauso wie er soll. Wirklich 1A Gebastla!

Beim Ausführen durchkämmt das Script sowohl die Quell-Haupt- und Unterverzeichnisse nach mp3-Dateien, als dann auch die Unterordner im angegebenen Ziel nach den entsprechenden, von den Quelldateien vorgegebenen Interpreten.

Die mp3-Dateien aus dem Quellverzeichnis werden schliesslich in den ersten, dem vorgegebenen Interpreten entsprechenden Ziel-Ordner verschoben.

Das Logfile dient zusätzlich als Kontrolle, wohin die Dateien verschoben wurden oder als Hinweis-Lieferant bei Nichtentsprechung.

Ich muss schon sagen, so für das Gröbste nimmt mir dieses Script wirklich einiges an "Arbeit" ab. Obwohl ich mir ja nicht ungern den einen oder anderen Song ans Ohr lege, aber bei Tausenden Stücken artet es dann schon eher in Arbeit aus.

Natürlich gäbe es Potenzial für Verbesserungen oder eher für den einen oder anderen Feinschliff, aber ein Diamant der Blitzprogrammierung ist er schon mal geworden

Nun kann ich mich mehr dem gezielten Musik-Hörgenuss widmen.

Danke, supa, happy

Grüsse
Bitte warten ..
Mitglied: bastla
06.01.2010 um 21:26 Uhr
Hallo RazorJack!
Danke, supa, happy
Da kommt auch bei mir Freude auf - die durch die Art Deines (ausführlichen) Feedbacks noch verstärkt wird

Falls Dir einmal die Version "für Arme" nicht mehr reicht - lass wieder von Dir lesen (und dann schaun mer mal ) ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Ordner Verteilen
Frage von CloudyWindows Tools12 Kommentare

Hallo, ich muss aktuell eine Lösung finden um einen Ordner regelmäßig auf 200 Geräten zu Synchronisieren. Dabei soll aber ...

Papierkorb
Mp3-Dateien werden nicht abgespielt
Frage von 121355Papierkorb3 Kommentare

Hallo Com, wie oben gesagt spielt mein LapTop keine mp3s,WMAs, usw mehr ab. Sehr schei_ für mich Programme, die ...

Batch & Shell
Viele Dateien automatisch in bestehende Ordner ablegen
gelöst Frage von charlybyBatch & Shell5 Kommentare

Hallo an die Spezialisten einfache Batchanweisungen kann ich erstellen. Bei dem momentanen Problem bin ich eindeutig an meinen Grenzen. ...

Batch & Shell
Batch: Dateien in einen Ordner verschieben, wenn sie im Zielordner nicht schon vorhanden sind
gelöst Frage von SinzalBatch & Shell7 Kommentare

Hallo Leute, ich bin neu im Forum und versuche mich an meiner ersten Frage. Bitte habt etwas Nachsicht, wenn ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 1 TagWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 1 TagWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 2 TagenInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement16 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...