Batch: Variable prüfen

ElGreco93

Erfahrenes Mitglied
Hallo,
ich schreibe grad ein Programm in Batch, welches mit Musikdateien aus einer *.m3u Playlist in ein Ordner Kopiert.
Eine m3u-Playlist ist so aufgebaut:
Code:
#EXTM3U
#EXTINF:234,3 Doors Down - Here Without You
D:\Musik\Rock\03 Here Without You.mp3

Mit
Code:
for /f %%i in (%playlist%.m3u)
lese ich die Playlist ein.
Wie kann ich in Batch überprüfen ob am anfang von %%i ein # vorkommt.
Dann soll die Variable übersprungen werden.

Danke schon mal im Vorraus

Mfg Philip
 
Moin ElGreco93,

dazu kannst du entweder die dynamische Laufvariable %%i in eine statische (=mit SET gesetze Variable) umkopieren und mit der CMD-eigenen Substring-Funktionalität arbeiten (siehe Set /? am CMD-Prompt) oder du filterst es mit Findstr aus.

Demo am CMD-Prompt:
Code:
D:\temp>
$cmd$type BspPlaylist.m3u
#EXTM3U
#EXTINF:234,3 Doors Down - Here Without You
D:\Musik\Rock\03 Here Without You.mp3
D:\temp>
$cmd$for /f "Delims=" %i in (BspPlaylist.m3u) do @echo %i|findstr /b "#"
#EXTM3U
#EXTINF:234,3 Doors Down - Here Without You

D:\temp>
$cmd$for /f "Delims=" %i in (BspPlaylist.m3u) do @echo %i|findstr /v /b "#"
D:\Musik\Rock\03 Here Without You.mp3
( die Sequenz "D:\temp>CRLF$cmd$" ist mein CMD-Prompt, nicht mit eingeben.)

Im Batch könnte es dann so aussehen:

Code:
....
FOR /F "Delims=" %%i in (%playlist%) do (
    echo %%i|findstr  /b "#" && Echo doVerarbeite alle mit "#" am Zeilenbeginn
    echo %%i|findstr /v /b "#" && Echo doVerarbeite alle ohne "#" am Zeilenbeginn
)

Grüße
Biber
 
Hi.

Man könnte auch einfach die eol Option einer for /F Schleife verwenden, dann werden die Zeilen die mit einem # beginnen automatisch herausgefiltert. Siehe "help for".

Gruß
 
Zuletzt bearbeitet:
Zurück