Batch Ordner und Dateistruktur kopieren von Playliste?

Manaplayer

Cadet 4th Year
Registriert
Juni 2017
Beiträge
92
Hallöchen Leute, Ihr habt mir schon oft geholfen :daumen:

Es geht darum: Der Code soll meine Ordner & Datenstraktur der Musikplayliste auf der Festplatte auf der RamDisk wiederherstellen.
Zuerst einfach, nur wenn es um Unterverzeichnisse geht, passieren immer Kopierfehler und kann auch verstehen warum, nur fällt mir keine logische Lösung dafür ein.
Zwischenablage01.jpg

Ein Beispiel:

Code:
for /f "tokens=*" %%a in ('findstr /i /r /c:"\<SNES\\Mario all stars\>" "D:\Eigene Dateien\Game Music\Game music.m3u8"') do (xcopy /e "%%a" "Z:\Musik\SNES\Mario all stars")

Die nicht in der Playlist vorhandenen Musikstücke werden auch nicht kopiert, nur werden alle in der Playliste vorhandenen Musikstücke in das Grundverzeichnis kopiert anstatt in "Mario 1, Mario 2..."
Wenn es nur um die Unterordner wie "Mario 1" gehen würde, könnte ich ja speziell nur in diesem Ordner suchen lassen, aber durch das Grundverzeichnis werden auch immer alle Dinge der Unterordner gefunden und in das Zielgrundverzeichnis kopiert.
Hat jemand eine Idee wie ich das hinbekommen kann?
 
Das Beispiel ist mir nicht ganz klar, wenn aber sowohl Quell- als auch Ziellaufwerk in Windows eingebunden sind, würde ich FreeFileSync verwenden.
 
Nein, das wäre einfach, klar. Nur geht es darum, dass ALLE Musiktitel im Quellverzeichnis vorhanden sind, aber nur die Titel in das Zielverzeichnis kopiert werden sollen, die auch in der Musik-Playliste vorhanden sind.
Wenn ich den Code eingebe:
Code:
for /f "tokens=*" %%a in ('findstr /i /r /c:"\<SNES\\Mario all stars\>" "%MusikPlayliste%"') do (echo %%a)
Kommt (verkürzt) das dabei heraus:
SNES\Mario all stars\Spielauswahl.spc
SNES\Mario all stars\Titelbildschirm.spc
SNES\Mario all stars\Mario 1\Bonus.spc
SNES\Mario all stars\Mario 1\Ende.spc
SNES\Mario all stars\Mario 2\Wart.spc
SNES\Mario all stars\Mario 2\Charakterauswahl.spc
SNES\Mario all stars\Mario 3\Bonus.spc
SNES\Mario all stars\Mario 3\Ende.spc

In den Verzeichnissen sind aber deutlich mehr Titel drin.
Es werden auch durchaus nur die Titel kopiert, die in der Playliste vorhanden sind, aber jedesmal nur in dem Grundverzeichnis "SNES\Mario all stars" und nicht in "Mario 1, Mario 2...", wo sie eigentlich hingehören.

Klar könnte ich eine fertige Maske aus der Playliste erstellen, nur bei der Sache geht es darum, wenn ich einen Titel hinzufügen oder entfernen würde in der Playliste, soll er auch im Zielverzeichnis vorkommen oder nicht.
 
ungetestet mangels entsprechender Dateistruktur, aber
Code:
copy "%%a" "Z:\Musik\%%a"
statt
Code:
xcopy /e "%%a" "Z:\Musik\SNES\Mario all stars"
sollte gehen. Du kannst ja den Pfad vom alten Dateinamen mitnutzen.
 
Guten Morgen,
Code:
for /f "tokens=*" %%a in ('findstr /i /r /c:"\<SNES\\Mario all stars\>" "D:\Eigene Dateien\Game Music\Game music.m3u8"') do (copy /y "D:\Eigene Dateien\Game Music\%%a")
funktioniert genauso nicht:
Alle Musiktitel landen wieder alle in das Grundverzeichnis "Z:\Musik\SNES\Mario all stars" anstatt in die richtigen Unterverzeichnisse "Z:\Musik\SNES\Mario all stars\Mario 1...Mario2...Mario3"

Das Quellverzeichnis ist "D:\Eigene Dateien\Game Music\SNES\Mario all stars" mit den Unterverzeichnissen "Mario 1...Mario 2...Mario 3"

Die Musiktitel sollen in der Zielverzeichnis "Z:\Musik" landen, wo die selbe Ordnerstruktur existiert (durch xcopy /t)
Eben so, dass es wie im Quellverzeichnis aussieht, nur das Musiktitel beim kopieren ausgelassen werden, die in der Musikplayliste nicht vorhanden sind.
 
Dann kannst du es ja stattdessen mal so versuchen, wie ich geschrieben hab... mit Quelldatei und Zieldatei als Argument (ich wusste gar nicht, dass copy auch ohne Zielort funktioniert, obskure Funktionalität):
Code:
for /f "tokens=*" %%a in ('findstr /i /r /c:"\<SNES\\Mario all stars\>" "D:\Eigene Dateien\Game Music\Game music.m3u8"') do (copy /y "D:\Eigene Dateien\Game Music\%%a" "Z:\Musik\%%a" )
 
Jaaa!
Es funktioniert :)
Die Ordner waren mit xcopy /t schon vorher erstellt, deswegen ging es mit copy.
Mein Kopf hat erst ein bisschen gebraucht bis ich kapiert hatte warum es jetzt geht (grade erst wach?), aber danke!
Nun kann ich jedes Verzeichnis so kopieren :)
 
Wie uncool...
Soweit hatte es funktioniert, nur wenn ich "Findstr" jetzt nur die Konsole angebe, um die es bei der Musik geht, hängt sich CMD scheinbar nur noch auf - Stürzt nicht ab, aber hinterlässt nur noch hohe Prozessorlast.

FOR /F "tokens=*" %%a in ('findstr /i /r /c:"\<SNES\>" "D:\Eigene Dateien\Game Music\Game music.m3u8"') do (echo %%a)

Was ist hier verkehrt?
 
Jetzt hab ich es aber:

Code:
FOR /f "tokens=*" %%a in ('findstr /i /r "%Konsole%" %Playlist5%') do (copy /y "%GameMusic%\%%a" "%Dir%\%%a")

Keine Ahnung warum das Script bei den ersten Malen bei der Suche findstr /c: brauchte, aber jetzt geht es wie es soll. Danke Leute :)
 
  • Gefällt mir
Reaktionen: simpsonsfan
Zurück
Oben