pbelcl
Goto Top

Musikstücke kopieren aus playlist

Hi Leute,

Ich habe eine Playliste die so aussieht:

Z:\Musik\MP3 2007\Hitparade\Chicago Bulls - Theme Song.mp3
Z:\Musik\MP3 2007\Hitparade\MICHAEL JACKSON - Who is it.mp3
Z:\Musik\MP3 2007\Hitparade\Atomic Kitten - Whole again.mp3
Z:\Musik\MP3 2007\Hitparade\Celine Dion - Think Twice.mp3
Z:\Musik\MP3 2007\Hitparade\Don't be cruel1.mp3  

Nun möchte ich per Batch die Files in einen anderen Ordner kopieren und habe begonnen mir dieses zu erstellen.
Die Dateien sollen den selben Dateinamen bekommen, aber z.B im Ordner "Z:\neue Files" befinden!

Leider komme ich nicht zurande aus meiner Playlist den Pfad von der Datei zu trennen um die Dateien in einen anderen Ordner zu kopieren.

Kann mir wer Starthilfe geben?

Content-ID: 86855

Url: https://administrator.de/contentid/86855

Ausgedruckt am: 22.11.2024 um 19:11 Uhr

tacker
tacker 02.05.2008 um 16:16:44 Uhr
Goto Top
salü

um die dateinamen vom pfad zu trennen kannst du folgenden schnipsel verwenden!

@echo off
FOR /F "tokens=5 delims=\" %%i in (playlist.txt) do echo.%%i>>playlist_neu.txt  

musst einfach noch anstatt von playlist.txt und playlist_neu.txt entsprechend deine dateinamen eingeben! so werden einfach die dateinamen in ein neues textfile geschrieben, wobei du natürlich mit der variable %%i anderweitig weiterarbeiten kannst (copybefehl)

gruss tacker
miniversum
miniversum 02.05.2008 um 16:23:45 Uhr
Goto Top
Mit einer For-Schleife kanst du ja die Playlist einzeln durchlaufen udn eben diese Dateien ermitteln.
In der Hilfe zum for befehl kans tdu dan auch sehen wie du an die einzelnen Dateinamen herankommst. Hier ein Auszug (ziemlich am Ende der Hilfe):
Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

    %~I         - Expandiert %I und entfernt alle umschließenden
                  Anführungszeichen (").  
    %~fI        - Expandiert %I zu einem vollständigen Dateinamen.
    %~dI        - Erzeugt nur den Laufwerkbuchstaben von %I.
    %~pI        - Erzeugt nur den Pfad von %I.
    %~nI        - Erzeugt nur den Dateinamen von %I.
    %~xI        - Erzeugt nur die Dateierweiterung von %I.
    %~sI        - Erzeugter Pfad enthält nur kurze Dateinamen.
    %~aI        - Erzeugt die Dateiattribute von %I.
    %~tI        - Erzeugt Datum und Zeit von %I.
    %~zI        - Erzeugt die Dateigröße von %I.
    %~$PATH:I   - Durchsucht die in der PATH-Umgebungsvariablen
                  angegebenen Verzeichnisse und expandiert die erste
                  gefundene Datei %I zu dem vollständigen Dateinamen.
                  Wenn der Name der Umgebungsvariablen nicht definiert
                  ist oder diese Datei bei der Suche nicht gefunden wurde,
                  wird dieser Parameter zu einer leeren Zeichenkette
                  expandiert.

Das ganze geht also einfach einfach, nach zuvor erstelltem Zielordner, z.B. so:
FOR /F "delims=" %%i in (Playlist.txt) do copy "%%i" "C:\Zielordner\%%~nxi"

PS: Solltest du damit rechnen dass die Dateinamen auch Umlaute enthalten könnten müßtest Du vorher noch die Codepage umschalten. Auch zu beachten wäre noch das je nach Programm mitdenen sie wie erstellt wurden einige Playlisten auch relative Pfade enthalten können.
pbelcl
pbelcl 04.05.2008 um 07:42:46 Uhr
Goto Top
Danke für Eure Tips!

Hab die Zeile von miniversum verwendet:
> FOR /F "delims=" %%i in (Playlist.txt) do copy "%%i" "C:\Zielordner\%%~nxi"

und daraus folgendes gemacht
@echo off
chcp 1252

SET liste=meine_TOPHITS
SET LW=p:\mp3's  
SET ZielPfad="P:\Mp3's\0 - Musik zusammenkopiert\%liste%\"  

if not exist %ZielPfad% md %ZielPfad%
FOR /F "delims=" %%i in (%liste%.m3u) do copy "%%i" %zielpfad%%%~nxi  

Klappt im Grunde schon fast außer dass ich wieder mal das Anführungszeichen Problem habe!!
Die Anführungszeichen die in der Variable %Zielpfad% drinnen sind zerstören in der FOR Schleife den Ausgabepfad!

Ich weiß daß ich dieses Problem mit eine kleinen copybatch lösen könnte den ich in der Schleife aufrufe, aber bevor ich mir darüber den Kopf zerbrechen mal die Frage:
Gibt es einen einfacheren Weg die Anführungszeichen aus der Variablen rauszubekommen?

%~zielpfad% hab ich probiert der hilft nix face-wink
miniversum
miniversum 04.05.2008 um 10:05:05 Uhr
Goto Top
Eigentlich müßte es so funktionieren. Ich denke da kommen eher Probleme wegen Leerzeichen im Dateinamen zum tragen.

Aber wenn du den Zielpfad ohne Anführungszeichen willst dann gehts auch so:
@echo off & setlocal
chcp 1252

SET liste=meine_TOPHITS
SET LW=p:\mp3's  
SET "zielpfad=P:\Mp3's\0 - Musik zusammenkopiert\%liste%"  

if not exist %ZielPfad% md %ZielPfad%
FOR /F "delims=" %%i in (%liste%.m3u) do copy "%%i" "%zielpfad%\%%~nxi"  
pbelcl
pbelcl 04.05.2008 um 13:34:33 Uhr
Goto Top
Danke für den Hinweis, das " gleich nach dem SET Befehl hatte ich noch nicht ausprobiert!

SET "zielpfad=P:\Mp3's\0 - Musik zusammenkopiert\%liste%"

hat funktioniert.

Werde jetzt mal testen ob jetzt alles andere auch funktioniert, danke vorerst....