Per Batch 7z Dateien anhand verschiedener Tags in diverse Ordner verschieben
Meine Mp3 Verwaltungswut geht weiter. Nachdem ich die Ordner nun richtig benannt und zu 7z Archiven gepackt habe, möchte ich diese per Batchfile in Verschiedene Unterordner Verschieben.
Die Namensgebung meiner 7zip Dateien ist wie folgt: YYYY-MM-DD - INTERPRET_-_ALBUM_TITEL_GENRE
Nun möchte ich die Dateien anhand der Tags (YYYY-MM-DD) und (GENRE) sortieren und zwar nach folgender Hirarchie:
Variabler Pfad.....\GENRE\YYYY\YYYY-MM\YYYY-MM-DD - INTERPRET_-_ALBUM_TITEL_GENRE.7zip
Die Datei "1962-08-XX - Johnny_Cash_-_The_Sound_of_Johnny Cash_Country.7z" soll also wie folgt kopiert werden:
Variabler Pfad z.b. C:\Country\1962\1962-08\1962-08-XX - Johnny_Cash_-_The_Sound_of_Johnny Cash_Country.7z
Die Batch sollte die diversen Ordner selbst erstellen falls diese nicht schon vorhanden sind.
Ich hoffe mein Gedankenspiel ist auch tatsächlich umsetzbar, für alternativ Lösungswege bin ich natürlich offen.
Wenn das ganze z.B. mit Verzeichnissen einfacher zu lösen wäre, könnte ich die Ordner auch erst nach dem Einpflegen mit 7z packen.
Ich freue mich schon auf euren Input.
Viele grüße
Robert
Die Namensgebung meiner 7zip Dateien ist wie folgt: YYYY-MM-DD - INTERPRET_-_ALBUM_TITEL_GENRE
Nun möchte ich die Dateien anhand der Tags (YYYY-MM-DD) und (GENRE) sortieren und zwar nach folgender Hirarchie:
Variabler Pfad.....\GENRE\YYYY\YYYY-MM\YYYY-MM-DD - INTERPRET_-_ALBUM_TITEL_GENRE.7zip
Die Datei "1962-08-XX - Johnny_Cash_-_The_Sound_of_Johnny Cash_Country.7z" soll also wie folgt kopiert werden:
Variabler Pfad z.b. C:\Country\1962\1962-08\1962-08-XX - Johnny_Cash_-_The_Sound_of_Johnny Cash_Country.7z
Die Batch sollte die diversen Ordner selbst erstellen falls diese nicht schon vorhanden sind.
Ich hoffe mein Gedankenspiel ist auch tatsächlich umsetzbar, für alternativ Lösungswege bin ich natürlich offen.
Wenn das ganze z.B. mit Verzeichnissen einfacher zu lösen wäre, könnte ich die Ordner auch erst nach dem Einpflegen mit 7z packen.
Ich freue mich schon auf euren Input.
Viele grüße
Robert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 185332
Url: https://administrator.de/forum/per-batch-7z-dateien-anhand-verschiedener-tags-in-diverse-ordner-verschieben-185332.html
Ausgedruckt am: 11.01.2025 um 03:01 Uhr
12 Kommentare
Neuester Kommentar
Moin
was ich mich bei deiner Aktion aber doch erst mal Frage ist, weshalb du überhaupt mp3-Dateien "komprimiert" irgendwo ablegst. Die Gänsefüßchen deshalb, weil es nun mal nicht möglich ist, ein ohnehin schon gepacktes Format noch in nennenswertem Umfang durch eine Komprimierung weiter zu verkleinern.
Gruß
Hubert
was ich mich bei deiner Aktion aber doch erst mal Frage ist, weshalb du überhaupt mp3-Dateien "komprimiert" irgendwo ablegst. Die Gänsefüßchen deshalb, weil es nun mal nicht möglich ist, ein ohnehin schon gepacktes Format noch in nennenswertem Umfang durch eine Komprimierung weiter zu verkleinern.
Gruß
Hubert
Hallo romberto!
Anhand Deines Beispiels etwa so:
Wegen der beiden "
Noch eine Anmerkung: Da vorweg in den Basispfad (im Beispiel "C:\") gewechselt wird, scheint dieser in der Ausgabe nicht auf - daher würde für Dein Beispiel die Anzeige so aussehen:
Grüße
bastla
[Edit] Variablennamen auf %ZielOrdner% geändert [/Edit]
Anhand Deines Beispiels etwa so:
@echo off & setlocal
set "Ordner=D:\Musik"
set "Basis=C:\"
pushd "%Basis%"
for /f "delims=" %%i in ('dir /b/a-d "%Ordner%\*.7z"') do set "Name=%%~ni" & call :ProcessFile "%Ordner%\%%i"
popd
goto :eof
:ProcessFile
for %%a in (%Name:_= %) do set "Genre=%%a"
for /f "tokens=1-2 delims=-" %%a in ("%Name%") do set "Jahr=%%a" & set "Monat=%%b"
set "ZielOrdner=%Genre%\%Jahr%\%Jahr%-%Monat%"
echo md "%ZielOrdner%" 2>nul
echo move %1 "%ZielOrdner%\"
goto :eof
echo
" in den Zeilen 14 und 15 werden die Befehle zum Erzeugen der Ordner und zum Verschieben der Datei nur angezeigt, aber nicht ausgeführt - wenn alles vernünftig aussieht, einfach diese beiden "echo
" entfernen und den Batch damit "scharf" schalten ...Noch eine Anmerkung: Da vorweg in den Basispfad (im Beispiel "C:\") gewechselt wird, scheint dieser in der Ausgabe nicht auf - daher würde für Dein Beispiel die Anzeige so aussehen:
md "Country\1962\1962-08"
move "D:\Musik\1962-08-XX - Johnny_Cash_-_The_Sound_of_Johnny Cash_Country.7z" "Country\1962\1962-08\"
bastla
[Edit] Variablennamen auf %ZielOrdner% geändert [/Edit]
Moin,
(ot)
Ich vermute mal, die anzahl derjenigen, die mehr mp3s als meine wenigkeit verwaltet, duerfte an einer hand abzuzaehlen sein.
Von daher kann ich das mit der ordnungswut nicht verstehen.
Meine "ordnungswut" besteht da dann doch eher darin, die id tags wirklich komplett sauber zu halten, lyrics zu pflegen und den ganzen anderen tuenneff, den man heute so macht, damit der mobile oder nicht mobile player die sammlung auch hybsch abspielen kann, eine statistik genutzt usw...
Ob man das nun mit amarok, squeezebox oder eitunes macht, ist ansichtssache, faktum (ala mischael schummelschumi) ist jedoch keiner der genannten verwalter holt sich nen wolf bei 100.0000 titeln.
(/ot)
(ot)
Ich vermute mal, die anzahl derjenigen, die mehr mp3s als meine wenigkeit verwaltet, duerfte an einer hand abzuzaehlen sein.
Von daher kann ich das mit der ordnungswut nicht verstehen.
Meine "ordnungswut" besteht da dann doch eher darin, die id tags wirklich komplett sauber zu halten, lyrics zu pflegen und den ganzen anderen tuenneff, den man heute so macht, damit der mobile oder nicht mobile player die sammlung auch hybsch abspielen kann, eine statistik genutzt usw...
Ob man das nun mit amarok, squeezebox oder eitunes macht, ist ansichtssache, faktum (ala mischael schummelschumi) ist jedoch keiner der genannten verwalter holt sich nen wolf bei 100.0000 titeln.
(/ot)
Hallo romberto!
Das "
Wenn Du übrigens "Genre" nicht verwenden willst, musst Du natürlich aus Zeile 13 auch die entsprechende Variable inkl folgendem Backslash entfernen, da ansonsten unabhängig vom angegebenen Basisordner die Ordner immer im Root des aktuellen Laufwerks erstellt werden ...
Grüße
bastla
Das "
echo
" am Anfang der Zeile 15 hast Du entfernt?Wenn Du übrigens "Genre" nicht verwenden willst, musst Du natürlich aus Zeile 13 auch die entsprechende Variable inkl folgendem Backslash entfernen, da ansonsten unabhängig vom angegebenen Basisordner die Ordner immer im Root des aktuellen Laufwerks erstellt werden ...
Grüße
bastla
Hallo romberto!
Ja - allerdings meinerseits: ein Variablenname (%Ordner%) für zwei verschiedene Pfade kann nicht gutgehen ...
Ich ändere das mal oben.
[Edit] Was Du aber nicht hättest ändern sollen, ist die Angabe des Ordners beim Aufruf des Unterprogramms in der (jetzt auch anhand der Nummer identifizierbaren - THX @ Biber) Zeile 6 ... [/Edit]
Grüße
bastla
Fehler?
Abgesehen davon, dass Du keine "Code"-Formatierung verwendest? Ja - allerdings meinerseits: ein Variablenname (%Ordner%) für zwei verschiedene Pfade kann nicht gutgehen ...
Ich ändere das mal oben.
[Edit] Was Du aber nicht hättest ändern sollen, ist die Angabe des Ordners beim Aufruf des Unterprogramms in der (jetzt auch anhand der Nummer identifizierbaren - THX @ Biber) Zeile 6 ... [/Edit]
Grüße
bastla
moin bastla,
auch wenn das Genre jetzt nicht mehr gebraucht wird.
Wenn als letztes das Genre mit einem Unterstrich vom Dateinamen unterscheidbar ist, dann kann der Tausch vom Unterstrich zum Backslash doch in der selben Schleife wie für die Jahr und Tag extraktion genommen werden.
(so Zeile 11 weglassen) und für Zeile 12
Ps. Roberto, bekommt der Beitrag noch einen Green Button ?
Gruß Phil
auch wenn das Genre jetzt nicht mehr gebraucht wird.
Wenn als letztes das Genre mit einem Unterstrich vom Dateinamen unterscheidbar ist, dann kann der Tausch vom Unterstrich zum Backslash doch in der selben Schleife wie für die Jahr und Tag extraktion genommen werden.
(so Zeile 11 weglassen) und für Zeile 12
for /f "tokens=1-2* delims=-" %%a in ("%Name:_=\%") do set "Jahr=%%a" & set "Monat=%%b" & set "Genre=%%~nc"
Ja - allerdings meinerseits: ein Variablenname (%Ordner%) für zwei verschiedene Pfade kann nicht gutgehen ...
Das hätte ja ohnehin gar nicht gestört. Die dir Auflistung ist ja schon lange vollzogen worden, bevor die Schleife das erste mal eine Ausgabe produziert. Delayedexpansion ist auch nicht an.Ps. Roberto, bekommt der Beitrag noch einen Green Button ?
Gruß Phil