.m3u Pfade auslesen und kopieren
Hallo Zusammen,
und zwar kleines Problem doch irgendwie will es nicht ;)
Batch liest mit einer for schleife aus einer .m3u(Winamp Playlist File) die Pfade aus(c:\relax.m3u) und soll diese nach (c:\mp3\) kopieren.
Ich glaube das Problem ist einfach das die Pfade die darin enthalten sind leerzeichen enthalten.
Weil die dateien die keine enthalten werde nämlich kopiert.
Also wie erweiter ich meine batch, dass das funktioniert ?
FOR /f %%f IN (c:\relax.m3u) DO copy /b %%f "c:\mp3\"
Danke
und zwar kleines Problem doch irgendwie will es nicht ;)
Batch liest mit einer for schleife aus einer .m3u(Winamp Playlist File) die Pfade aus(c:\relax.m3u) und soll diese nach (c:\mp3\) kopieren.
Ich glaube das Problem ist einfach das die Pfade die darin enthalten sind leerzeichen enthalten.
Weil die dateien die keine enthalten werde nämlich kopiert.
Also wie erweiter ich meine batch, dass das funktioniert ?
FOR /f %%f IN (c:\relax.m3u) DO copy /b %%f "c:\mp3\"
Danke
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 55867
Url: https://administrator.de/contentid/55867
Ausgedruckt am: 20.11.2024 um 08:11 Uhr
12 Kommentare
Neuester Kommentar
Hallo boehli!
In Batch gelten zB Leerstelle und Tab standardmäßig als Trennzeichen (siehe "for /?"). Durch die Angabe von "delims=" kann dieses Trennzeichen geändert werden - wenn ich dabei keines angebe (nach dem "=" und vor dem Anführungszeichen steht ja nichts mehr), wird auch nicht getrennt.
Damit hast Du den Pfad/Dateinamen aus der Liste herausbekommen - damit nicht beim "copy"-Befehl gleich wieder die Leerstellen zum "Auseinanderreißen" des Namens führen, wird dieser unter Anführungszeichen gesetzt und damit zusammengehalten.
Grüße
bastla
In Batch gelten zB Leerstelle und Tab standardmäßig als Trennzeichen (siehe "for /?"). Durch die Angabe von "delims=" kann dieses Trennzeichen geändert werden - wenn ich dabei keines angebe (nach dem "=" und vor dem Anführungszeichen steht ja nichts mehr), wird auch nicht getrennt.
Damit hast Du den Pfad/Dateinamen aus der Liste herausbekommen - damit nicht beim "copy"-Befehl gleich wieder die Leerstellen zum "Auseinanderreißen" des Namens führen, wird dieser unter Anführungszeichen gesetzt und damit zusammengehalten.
Grüße
bastla
Moin Endzeit,
der komplette Oneliner steht doch schon oben?
Und den letzten Teil der Frage: "Nur w*rd ich gerne wissen wie er das in dem kompletten ordner machen kann." ...kannst Du das bitte ein wenig umformulieren?
Ich versteh es zumindest nicht, aber wenn es zu dem beliebten Thema "Playlist ummuddeln" gehoert, dann sollten wir es ruhig hier behandeln.
Danke
Biber
der komplette Oneliner steht doch schon oben?
Und den letzten Teil der Frage: "Nur w*rd ich gerne wissen wie er das in dem kompletten ordner machen kann." ...kannst Du das bitte ein wenig umformulieren?
Ich versteh es zumindest nicht, aber wenn es zu dem beliebten Thema "Playlist ummuddeln" gehoert, dann sollten wir es ruhig hier behandeln.
Danke
Biber
Und zwar habe ich in meinen Playlisten immer die Pfade "D:\Eigene Dateien\Eigene Musik\
und dann Unterordner "Alben\Interpret\Albenname\"
und die Playlisten liegen im Ordner "Playlisten".
Nun würd ich gern den Pfad, der automatisch eingetragen wird,
per Batch abändern.
und zwar "D:\Eigene Dateien\Eigene Musik\" in "..\"
Damit es relativ ist und ich nicht immer den gleichen Spaß habe, wenn ich mich z.b. entscheide,
den ordner zu verschieben...dann stimmen die Pfade nicht mehr, ist ja auch logisch
Hoffe das war eine ausreichende Beschreibung
und dann Unterordner "Alben\Interpret\Albenname\"
und die Playlisten liegen im Ordner "Playlisten".
Nun würd ich gern den Pfad, der automatisch eingetragen wird,
per Batch abändern.
und zwar "D:\Eigene Dateien\Eigene Musik\" in "..\"
Damit es relativ ist und ich nicht immer den gleichen Spaß habe, wenn ich mich z.b. entscheide,
den ordner zu verschieben...dann stimmen die Pfade nicht mehr, ist ja auch logisch
Hoffe das war eine ausreichende Beschreibung
Na ja, wenns weiter nichts ist...
Wenn Deine .m3u Datei also xx.m3u heisst, dann am CMD-Prompt diese eine Zeile eingeben...
wenn das am Bildschirm angezeigte Ergebnis passt, dann noch ein ">>NeueRelativPfadPlaylist.m3u" anhaengen.
Gruss
Biber
P.S. Auch wenn heute zwei Code-Zeilen angezeigt werden - es ist eine.
Wenn Deine .m3u Datei also xx.m3u heisst, dann am CMD-Prompt diese eine Zeile eingeben...
for /f "delims=" %i in (xx.m3u) do @for /f "delims=\ tokens=3,*" %j in ("%i") do @echo ..\%k
Gruss
Biber
P.S. Auch wenn heute zwei Code-Zeilen angezeigt werden - es ist eine.
*seufz*
Dann wickeln wir halt noch ein FOR-Schleifchen drum, was soll's...
Wechseln/Ersetzen per Batch geht nicht sinnvoll.
Von daher mein Vorschlag: zu jeder vorhandenen Playlistxxx.m3u wird im selben Verzeichnis eine PlaylistxxxRELPATH.m3u angelegt.
Dann brauchen wir nicht extra einen Mehrzeiler schreiben.
Am CMD-Prompt (ist wieder eine! Zeile):
Wenn Dir der Einzeiler zu lang zum Eintippseln ist, dann sieht der als (formatierter) Batch-Oneliner so aus:
...wobei Du natürlich auch den ersten FOR /R -Startverzeichnisparameter ("c:\Eigene Dateien\Eigene Musik") ersetzen könntest durch ein %1 und dann den Startpfad als Parameter mitgibst.
Gruss
Biber
[Edit]
Wenn natürlich alle .m3u's direkt im Verzeichnis "....\Eigene Musik" liegen, dann reicht
statt jetzt: @for /R "c:\Eigene Dateien\Eigene Musik" %%f IN (*.m3u) DO ....lala
NEU dieses: @for %%f IN ("c:\Eigene Dateien\Eigene Musik\*.m3u") DO....lala
[/Edit]
Dann wickeln wir halt noch ein FOR-Schleifchen drum, was soll's...
Wechseln/Ersetzen per Batch geht nicht sinnvoll.
Von daher mein Vorschlag: zu jeder vorhandenen Playlistxxx.m3u wird im selben Verzeichnis eine PlaylistxxxRELPATH.m3u angelegt.
Dann brauchen wir nicht extra einen Mehrzeiler schreiben.
Am CMD-Prompt (ist wieder eine! Zeile):
for /r "c:\Eigene Dateien\Eigene Musik" %f in (*.m3u) do @for /f "usebackq delims=" %i in ("%f") do @for /f "delims=\ tokens=3,*" %j in ("%i") do @echo ..\%k
>> "%~dpnfRELPATH%~xf"
Wenn Dir der Einzeiler zu lang zum Eintippseln ist, dann sieht der als (formatierter) Batch-Oneliner so aus:
@FOR /R "c:\Eigene Dateien\Eigene Musik" %%f IN (*.m3u) do @(
FOR /F "usebackq delims=" %%i in ("%%f") do @(
FOR /F "delims=\ tokens=3,*" %%j in ("%%i") do @echo ..\%%k >> "%%~dpnfRELPATH%%~xf"
))
Gruss
Biber
[Edit]
Wenn natürlich alle .m3u's direkt im Verzeichnis "....\Eigene Musik" liegen, dann reicht
statt jetzt: @for /R "c:\Eigene Dateien\Eigene Musik" %%f IN (*.m3u) DO ....lala
NEU dieses: @for %%f IN ("c:\Eigene Dateien\Eigene Musik\*.m3u") DO....lala
[/Edit]
Danke für die Rückmeldung, Endzeit,
dann mache ich diesen Beitrag erstmal dicht.
Was auf keinen Fall heißen so, dass ich von Dir oder von Playlisten oder FOR-Anweisungen nie wieder etwas lesen will.
Wenn es also bei Deinem konkreten Problem auch nach Auseinandersetzung mit dem Thema "Batch" noch klemmen sollte, dann eröffne einen neuen Thread in "Batch & Shell".
You're welcome.
Grüße
Biber
dann mache ich diesen Beitrag erstmal dicht.
Was auf keinen Fall heißen so, dass ich von Dir oder von Playlisten oder FOR-Anweisungen nie wieder etwas lesen will.
Wenn es also bei Deinem konkreten Problem auch nach Auseinandersetzung mit dem Thema "Batch" noch klemmen sollte, dann eröffne einen neuen Thread in "Batch & Shell".
You're welcome.
Grüße
Biber