max5moritz
Goto Top

Batch-File zum Auslesen von Playlist für VLC

Mein Problem ist folgendes:
VLC soll eine playliste mit streams abarbeiten und die streams einzeln speichern.

C:\Video\VLC\vlc.exe -vvv D:\Audio\play.m3u --sout file/ps:D:\Audio\MP3\Datei.ps
Die Zeile wird prompt erledigt, VLC arbeitet die *.m3u ab, überschreibt aber immer wieder die "Datei.ps"
Das Problem in dieser Befehlszeile ist also die "Datei.ps", wofür ich den Namen gern aus der play.m3u auslesen lassen möchte.
Habe mich schon versucht:

for /F "eol=; tokens=1*" %%A IN D:\Audio\play.m3u do ('C:\Video\VLC\vlc.exe -vvv %%A --sout file/ps:D:\Audio\MP3\%%~nA.ps')

aber ernte nur Syntaxfehler: "D:\Audio\play.m3u kann hier nicht verwendet werden."

Die Liste enthält 20 Zeilen, pro Job beschreiben zwei Zeilen den stream
#EXTINF:0,131. heute Morgen 03.01.2010
http://ondemand-mp3.+++1c.mp3

Habe die Datei (*.m3u) auch geteilt geteilt in Quelle (http) und Ziel (name), alles ohne den gewünschten Erfolg.

OS ist WinXP

Vielen Dank für Eure Hilfe.

Content-Key: 143089

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

Printed on: April 24, 2024 at 05:04 o'clock

Member: bastla
bastla May 18, 2010 at 19:29:38 (UTC)
Goto Top
Hallo max5moritz und willkommen im Forum!

Das scheitert zunächst schon an der Syntax der "for"-Schleife, und dann auch daran, dass ja nur jede zweite Zeile (dh jede, die mit "http" beginnt) verarbeitet werden soll - demzufolge sollte es eher so gehen:
for /F "delims=" %%A IN ('findstr /i /b "http" "D:\Audio\play.m3u"') do for /f "tokens=2 delims=.) %%i in ("%%A") do "C:\Video\VLC\vlc.exe" -vvv "%%A" --sout file/ps:D:\Audio\MP3\%%i.ps
Zunächst wird die Adresse am Stück ausgelesen (%%A) und dann anhand der Punkte zerlegt und nur der 2. Bestandteil (somit im Beispiel oben "+++1c") als %%i ermittelt - dies alles aber nur für die Zeilen, die mit "http" (oder auch etwa "Http" - deshalb zur Sicherheit "findstr /i") beginnen ...

Grüße
bastla
Member: max5moritz
max5moritz May 18, 2010 at 19:58:43 (UTC)
Goto Top
Danke für die schnelle Antwort.
Erst ging der Skript garnicht, weil bei "tokens=2 delims=." ) fehlte.

Danach ging das Auslesen der playliste, dafür kommt aber:

D:\Audio\MP3>for /F "tokens=2 delims=.") %i in ("http://ondemand-mp3.c5f7a.mp3") do "F:\Video\VLC\vlc.exe" -vvv "http://ondemand-mp3.c5f7a.mp3" --sout file/ps:"D:\Audio\MP3\%i.ps" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Also wird die variable %i noch nicht erkannt. Woran liegt das?

Gruß
max5moritz

edit: habe den Fehler gefunden: )

Jetzt ist nur noch das Problem ist:
Nach jedem Stream muss ich den VLC manuell schließen, dann startet der nächste.
Und: Die Schleife findet kein Ende. Ich mußte die BAT gewaltsam beenden.

Ansonsten bin ich begeistert, was sei eine Schleife alles kann.

Danke erstmal bis hierher!
Mitglied: 77559
77559 May 18, 2010 at 20:12:58 (UTC)
Goto Top
Hallo bastla,

sieht gut aus. Ich wusste gar nicht das einen die Command line options von VLC glatt erschlagen können, evtl muss man noch --play-and-exit anhängen damit er sich beendet, ggfs ist auch noch ein vorangestelltes Start /wait nötig.

Gruß
LotPings
Mitglied: 77559
77559 May 18, 2010 at 20:27:19 (UTC)
Goto Top
Hallo max5moritz,

Ich glaube eher, dein Editor hat dir ein Schnippchen geschlagen und aus einigen " ein " gemacht.

@bastla, ich hoffe ich funke dir nicht dazwischen face-wink

Gruß
LotPings
Member: max5moritz
max5moritz May 18, 2010 at 20:34:25 (UTC)
Goto Top
Hallo LotPings

Start /wait würde ja bedeuten die BAT warten soll, macht sie ja, sie wartet auf das Schließen von VLC, danach geht es weiter.

Nur, wenn die playliste abgearbeitet ist, gehts es wieder von vorne los.

Gruß
max5moritz
Mitglied: 77559
77559 May 18, 2010 at 20:41:40 (UTC)
Goto Top
Ich wußte ja auch vorher nicht,
wie sich bei dir verhält.

Hast du es denn mit --play-and-exit versucht ?

Gruß
LotPings
Member: max5moritz
max5moritz May 18, 2010 at 21:19:39 (UTC)
Goto Top
wo muß ich dann --play-and-exit einfügen?

Also, so sieht die Zeile jetzt aus:

for /F "delims=" %%A IN ('findstr /i /b "http" "D:\Audio\quelle.txt"') do for /f "tokens=2 delims=_" %%i in ("%%A") do "C:\Video\VLC\vlc.exe" -vvv "%%A" --sout file/ps:"D:\Audio\MP3\Audio\%%~ni.ps"

So wird die Liste schrittweise abgearbeitet, VLC muß jedesmal geschlossen werden, die BAT endet sauber und jede Datei hat einen eigenen Namen.

Ich hatte versuchsweise die Zeile wie folgt abgeändert:

for /F "delims=" %%A IN ('findstr /i /b "http" "D:\Audio\quelle.txt"') do for /f "tokens=2 delims=_" %%i in ('findstr /i /b "#EXTINF:" "D:\Audio\quelle.txt"'), do "C:\Video\VLC\vlc.exe" -vvv "%%A" --sout file/ps:"D:\Audio\MP3\Audio\%%~ni.ps"

Was zu der Endlosschleife führte und:

Ich hat zwar verschiedene Dateinamen, aber immer den gleichen Inhalt.

Wie kann ich also die Schleife so ändern, dass sowohl die Quelle als auch der Name sauber verarbeitet werden?

#EXTINF:0,117. Am Morgen 17.01.2010
http://ondemand-mp3.100117_0835_7f0.mp3


Gruß
max5moritz
Mitglied: 60730
60730 May 18, 2010 at 21:29:15 (UTC)
Goto Top
Servus,

 for /F "delims=" %%A IN ('findstr /i /b "http" "D:\Audio\quelle.txt"') do for /f "tokens=2 delims=_" %%i in ("%%A") do "C:\Video\VLC\vlc.exe" -vvv --play-and-exit "%%A" --sout file/ps:"D:\Audio\MP3\Audio\%%~ni.ps"  
Member: max5moritz
max5moritz May 18, 2010 at 21:43:52 (UTC)
Goto Top
Danke für die Antwort, doch das Ergebins ist nicht okay.

--play-and-exit steht dann im Widerspruch zu --sout. Dadurch bleibt der VLC ruhig und lädt die Datei in nur ca. 15 s.
Bei --play-and-exit spielt er diese ab, was dann solange dauert, wie diese lang ist.

Dann wäre das manuelle Schließen noch akzeptabel.

Interesanter wäre noch die Lösung für das oben beschribene Auslesen der Namen für die Datei(en).
Mitglied: 77559
77559 May 18, 2010 at 22:12:33 (UTC)
Goto Top
Sag mal, den Link zu den command line opttions hast du doch auch gesehen?
Ihn zu finden war nicht schwer, die Liste durchzugehen auch nicht - nur ziemlich lang.

und da gibt es auch noch andere Einträge,
      --play-and-exit, --no-play-and-exit
                                 Play and exit (default disabled)
          Exit if there are no more items in the playlist. (default disabled)
      --play-and-stop, --no-play-and-stop
                                 Play and stop (default disabled)

man hat schon langsam das Gefühl das man dich zu deiner Lösung hin tragen muss face-wink

Versuchs mal mit --no-play-and-exit

BTW: vielleicht hast du bemerkt das die von anderen geposteten Codes besser lesbar sind als deine,
also bitte formatiere deinen Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen aus der Formatierungshilfe

Wie kann ich also die Schleife so ändern, dass sowohl die Quelle als auch der Name sauber verarbeitet werden?

#EXTINF:0,117. Am Morgen 17.01.2010
http://ondemand-mp3.100117_0835_7f0.mp3
Was du jetzt hier als Name betrachtest müßtest du noch erklären.

Gruß
Lotpings
Member: bastla
bastla May 19, 2010 at 05:47:20 (UTC)
Goto Top
Hallo LotPings!
@bastla, ich hoffe ich funke dir nicht dazwischen face-wink
Ganz im Gegentum - ich habe ohnehin gerade nicht so viel Zeit übrig (oben hat's nicht einmal mehr für das schließende Anführungszeichen gereicht face-wink), daher bringe ich derzeit meist nur Ansätze zustande und freue mich, wenn Du das Ganze optimierst / finalisierst / von einer anderen Seite her noch besser hinkriegst ... face-smile

Grüße
bastla
Mitglied: 60730
60730 May 19, 2010 at 06:25:39 (UTC)
Goto Top
Zitat von @max5moritz:
Danke für die Antwort, doch das Ergebins ist nicht okay.

--play-and-exit steht dann im Widerspruch zu --sout. Dadurch bleibt der VLC ruhig und lädt die Datei in nur ca. 15 s.
Bei --play-and-exit spielt er diese ab, was dann solange dauert, wie diese lang ist.

Moin,

da wir ja alle etwas rätseln, was denn in der Liste steht - konnte das keiner wissen....

Dein Problem liegt also darin, dass du in einer .m3u mehrere Streams hast und du Vlc seriell mit einem Stream der Liste startest.

Du mußt also pro fund "http" in deiner Liste den VLC mit diesem Fund füttern.
Ist jetzt nur die Frage, wieviele Einträge dadrin sind und ob deine Leitung das parallele starten und saugen von x Streams gleichzeitig beherrscht.

Gruß
Member: max5moritz
max5moritz May 19, 2010 at 07:02:48 (UTC)
Goto Top
Hallo,

Danke für Eure Mühe.

Die Liste enthält 20 Zeilen die wie folgt untereinander stehen:

#EXTINF:0,117. Am Morgen 17.01.2010 http://ondemand-mp3.100117_0835_7f0.mp3

Der Name soll sein ab "Am Morgen 17.01.2010"

Parallel wäre möglich, aber nicht nötigt, da das Laden einer einzelnen Datei mit transcode ca. 20-25 s dauert.

--no-play-and-exit

läßt das VLC-Fenster auch offen.

Ich habe mal folgendes probiert:

... "C:\Video\VLC\vlc.exe" --intf dummy "%%A"...

Dadurch wird VLC im Terminal ausgeführt, das heißt, es öffnet sich ein Terminal-Fenster, mit entsprechenden Ausgaben, was VLC gerade macht. Nun wartet aber VLC auf den Befehl: VLC -I qt

Schließe ich jetzt dieses Ausgabe-Fenster am "x", kommt im BAT-Terminal-Fenster die Frage:
^CBatchvorgang abbrechen <J/N>?

Sage ich N, geht die Schleife weiter. Das heißt das Problem, alle Stream nach einander abzuarbeiten, ist nicht besser geworden, aber vielleicht jetzt lösbarer?

Nochmal die komplette Schleife:

for /F "delims=" %%A IN ('findstr /i /b "http" "D:\audio\quelle.txt"') do for /f "tokens=2 delims=_" %%i in ("%%A") do "C:\Video\VLC\vlc.exe" --intf dummy "%%A" :sout=#transcode{acodec=mp3,ab=64,channels=1}:duplicate{dst=std{access=file,mux=raw,dst=D:\Medien\Audio\%%~ni.mp3}}

Ich hoffe, ich habe den Text nun gut lesbar formartiert. face-smile und freue mich schon auf Eure kompetenten Antworten.

Gruß
max5moritz
Member: Biber
Biber May 19, 2010 at 19:22:23 (UTC)
Goto Top
Moin max5moritz,

Ich versuch noch mal ein wenig Feintuning an der Codeformatierung... face-wink
Deine anderen Detaillierungen zitiere ich mal vollständig mit.
Zitat von @max5moritz:
Hallo,

Danke für Eure Mühe.

Die Liste enthält 20 Zeilen die wie folgt untereinander stehen:

#EXTINF:0,117. Am Morgen 17.01.2010http://ondemand-mp3.100117_0835_7f0.mp3

Der Name soll sein ab "Am Morgen 17.01.2010"

Parallel wäre möglich, aber nicht nötigt, da das Laden einer einzelnen Datei mit transcode ca. 20-25 s dauert.

--no-play-and-exit

läßt das VLC-Fenster auch offen.

Ich habe mal folgendes probiert:

... "C:\Video\VLC\vlc.exe" --intf dummy "%%A"...

Dadurch wird VLC im Terminal ausgeführt, das heißt, es öffnet sich ein Terminal-Fenster, mit entsprechenden
Ausgaben, was VLC gerade macht. Nun wartet aber VLC auf den Befehl: VLC -I qt

Schließe ich jetzt dieses Ausgabe-Fenster am "x", kommt im BAT-Terminal-Fenster die Frage:
^CBatchvorgang abbrechen <J/N>?

Sage ich N, geht die Schleife weiter. Das heißt das Problem, alle Stream nach einander abzuarbeiten, ist nicht besser
geworden, aber vielleicht jetzt lösbarer?

Nochmal die komplette Schleife:
for /F "delims=" %%A IN ('findstr /i /b "http" "D:\audio\quelle.txt"') do (  
        for /f  "tokens=2 delims=_" %%i in ("%%A") do  (   
            "C:\Video\VLC\vlc.exe" --intf dummy "%%A" :sout=#transcode{acodec=mp3,ab=64,channels=1}:duplicate{dst=std{access=file,mux=raw,dst=D:\Medien\Audio\%%~ni.mp3}}  
 )
)         
... und eigentlich müsste sich die elend lange VLC-Parameterlister auch noch umbrechen lassen,
wenn der CMD.exe ein "nicht zu beachtender Zeilenumbruch" durch ein "Caret plus ENTER",
sichtbar im Code als "^" am Zeilenende untergejubelt wird.
Dieses "Feature" verwende ich auch nur in Notfällen, aber das hier ist einer.

for /F "delims=" %%A IN ('findstr /i /b "http" "D:\audio\quelle.txt"') do (  
        for /f  "tokens=2 delims=_" %%i in ("%%A") do  (   
            "C:\Video\VLC\vlc.exe" ^  
                       --intf dummy "%%A" ^  
                       :sout=#transcode{acodec=mp3,ab=64,channels=1}^
                       :duplicate{dst=std{access=file,mux=raw,dst=D:\Medien\Audio\%%~ni.mp3}}
 )
) 

Grüße
Biber
Member: bastla
bastla May 19, 2010 at 19:56:03 (UTC)
Goto Top
Hallo @all!

Da ja nun jeweils 2 Zeilen zu verabeiten sind, ein neuer (ungetesteter) Ansatz:
@echo off & setlocal
set "Datei=D:\audio\quelle.txt"  

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
echo %~1|findstr /b "#EXTINF" && (for /f "tokens=1* %%a in (%1) do set "Name=%%b" & goto :eof)  
for /f "tokens=2 delims=_" %%i in (%1) do (  
            "C:\Video\VLC\vlc.exe" ^   
                       --intf dummy %1 ^ 
                       :sout=#transcode{acodec=mp3,ab=64,channels=1}^ 
                       :duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}}  
)
goto :eof
Grüße
bastla
Member: max5moritz
max5moritz May 19, 2010 at 20:40:42 (UTC)
Goto Top
Moin Biber,

Variante 1 des Feintuning geht, die andere bringt mehrere Fehlermeldungen. Wollte dies per > umleiten in Text-Datei.
Die blieb leer. Gibt es eine andere Möglichkeit, die Meldung des VLC-Terminalfenster hier anzuzeigen?

Hast Du eine Idee für die Names-Geschichte?

Als ich das gerade schreibe, kommt gerade eine Idee von @basla rein. Danke. Habe diese gleich ausprobiert.
Die BAT schließt das Fenster so schnell, dass ich nichts erkennen kann, d.h., es geht nicht. Die möglichen Fehler,
die ich erkannt habe, habe ich abgeändert, was aber auch keinen erkennbaren Erfolg zeigte.

set "Datei=D:\audio\quelle.txt"

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"

Müßten die Anführungszeichen in der Klammer nicht einfach sein, ich weiss es nicht genau?
Den Rest Deiner tollen Idee kann ich nur erahnen, doch meine ich, dass ein Teil des Fehler auch an der Formartierung liegen könnte. Siehe dazu die Ausführung zu @Biber. Variante 1 geht, zwei nicht.

Dank bis hierher.

Gruß
max5moritz
Member: bastla
bastla May 19, 2010, updated at Oct 18, 2012 at 16:42:12 (UTC)
Goto Top
Hallo max5moritz!

Dann also eher:
@echo off & setlocal
set "Datei=D:\audio\quelle.txt"  

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
echo %~1|findstr /b "#EXTINF" && (for /f "tokens=1* %%a in (%1) do set "Name=%%b" & goto :eof)   
for /f "tokens=2 delims=_" %%i in (%1) do (   
    "C:\Video\VLC\vlc.exe" --intf dummy %1 :sout=#transcode{acodec=mp3,ab=64,channels=1}:duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}}  
 )
goto :eof
Die Anführungszeichen waren eigentlich so gemeint, wie ich sie gesetzt habe ...

Zum Thema
Die BAT schließt das Fenster so schnell, dass ich nichts erkennen kann
Batches solltest Du sinnvoller Weise direkt aus einer CMD-Shell starten - dann kannst Du auch Fehlermeldungen in Ruhe lesen (mehr dazu habe ich heute hier schon mal angemerkt) ...

Grüße
bastla

[Edit] Hoffentlich alle Flüchtigkeitsfehler wieder korrigiert [/Edit]
Member: max5moritz
max5moritz May 19, 2010 at 21:12:03 (UTC)
Goto Top
Vielleicht als Vereinfachung,

for /F "delims=" %%A IN ('findstr /i /b "http" "D:\Audio\quelle.txt"') do for /f "tokens=2 delims=_" %%i in ('findstr /i /b "#EXTINF:" "D:\Audio\quelle.txt"'), do "C:\Video\VLC\vlc.exe" -vvv "%%A" --sout file/ps:"D:\Audio\MP3\Audio\%%~ni.ps"

dieser String funktionierte ja in der Form, das alle Namen ausgelesen wurden.
Nur wurde immer die gleiche http-Quelle als Stream genommen.

Damit es nicht so trocken ist face-smile, den vollen Text zweier Doppelzeilen

#EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009http://ondemand-mp3.dradio.de/file/dradio/2009/12/20/dlf_20091220_0835_ .... Lichterglanz und Stille 13.12.2009http://ondemand-mp3.dradio.de/file/dradio/2009/12/13/dlf_20091213_0835_ ...

Mein Fehler ist also irgendwo in der fehlerhaften Umsetzung von:

for /f "tokens=2 delims=_" %%i in ("%%A") do "C:\Video\VLC\vlc.exe" ....

zu

for /f "tokens=2 delims=_" %%i in ('findstr /i /b "#EXTINF:" "D:\Audio\quelle.txt"') do "C:\Video\VLC\vlc.exe" ...

zu suchen. Den Feinschliff (Fenster automatisch schließen etc. pp) können wir ja dann anschließend versuchen.

Danke für Eure Mühe.

Gruß
max5moritz
Member: max5moritz
max5moritz May 19, 2010 at 21:47:10 (UTC)
Goto Top
Hallo bastla

Danke für Deine Geduld und den Hinweis. Habe die Meldungen umgeleitet:

D:\Medien\Audio>set "Datei=D:\Medien\audio\quelle.txt" D:\Medien\Audio>for /F "usebackq delims=" %i in ("D:\Medien\audio\quelle.txt") do call :ProcessLine "%i" D:\Medien\Audio>call :ProcessLine "#EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009" "143." ist an dieser Stelle syntaktisch nicht verarbeitbarD:\Medien\Audio>echo #EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009|findstr /b "#EXTINF" && (for /f "tokens=1* %a in ("#EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009") do set "Name=%b" & goto :eof)

Das heißt der Name wird perfekt ausgelesen, allein es fehlt die http-Zeile. Doch die hatten wir doch schon mal.

Gruß
max5moritz
Mitglied: 77559
77559 May 19, 2010 at 22:21:09 (UTC)
Goto Top
Hallo max5moritz,

dein spätes herausrücken von wesentlichen Information und das ständige vermurksen der Anführungszeichen lässt einen schon die Lust verlieren.
In deinen Konkreten Extifnf Zeilen kommen für den Namen unzulässige Doppelpunkte vor. ich hab das jetzt noch mal alles glattgebügelt und hier sieht die nur per Echo ausgegebene Zeile ok aus - prüf das mal selber und wenn es richtig erscheint entferne das echo in Zeile 14.

@echo off
cls
setlocal
set "Datei=D:\audio\quelle.txt"  

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
echo %~1|findstr /b "#EXTINF" && (  
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof)  
Set "Name=%Name::=_%"  
for /f "delims=" %%i in (%1) do (  
  Echo "C:\Video\VLC\vlc.exe" ^  
    --intf dummy %1 ^
    :sout=#transcode{acodec=mp3,ab=64,channels=1}^
    :duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}}  
)
goto :eof

Gruß
Lotpings

PS so richtig klappt das bei dir mit den < code > und </ code > Tags aber noch nicht.
Mitglied: 60730
60730 May 19, 2010 at 22:36:21 (UTC)
Goto Top
Salü,

nimm dir doch bitte mal ein bisserl Zeit und schau dir nicht nur die Bisherigen Zeilen an, sondern zitiere die mal um herauszufinden, wie "wir" Text so schreiben, dass der lesbar ist.

 Klick mich 


#EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009
http://ondemand-mp3.dradio.de/file/dradio/2009/12/20/dlf_20091220_0835_be89765a.mp3
#EXTINF:0,150. Lichterglanz und Stille 13.12.2009
http://ondemand-mp3.dradio.de/file/dradio/2009/12/13/dlf_20091213_0835_810df7e4.mp3

Gruß
Member: max5moritz
max5moritz May 19, 2010 at 23:15:06 (UTC)
Goto Top
Hallo Lotpings,

sorry und herzlichen Dank. Nun ist es fast perfekt. Eine Kleinigkeit mußte ich dennoch ändern, da VLC mit den ^ nicht klar kommt. Es erscheinen dann nur Fehlermeldungen im VLC-Terminal-Fenster.

So geht es:

@echo off
cls
setlocal
set "Datei=D:\audio\quelle.txt"  

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
echo %~1|findstr /b "#EXTINF" && (  
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof)  
Set "Name=%Name::=_%"  
for /f "delims=" %%i in (%1) do (  
   "C:\Video\VLC\vlc.exe" --intf dummy %1 :sout=#transcode{acodec=mp3,ab=64,channels=1}:duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}}  
)
goto :eof

Wenn ich --intf dummy weglasse, öffnet sich der VLC grafisch, nach einem Schließen wird der nächsten Stream abgearbeitet bis alle durch sind.

Mit --intf dummy kommt wie gesagt das VLC-Terminal-Fenster. Schließe ich das, wenn die Datei fertig ist, muss ich im BAT-Fenster jedesmal sagen, dass ich die BAT noch nicht beenden will. Dann geht es weiter.

Trotzdem bin ich begeistert und danke herzlichst für Eure Mithilfe.

Jetzt ist es Zeit zum Schlafen. Vielleicht können wir den Feinschliff (BAT läuft ohne Halt durch) noch hinbekommen?

So long
max5moritz
Member: max5moritz
max5moritz May 19, 2010 at 23:24:42 (UTC)
Goto Top
Danke für den Wink .-)
Ich werd's beherzigen.
So long
Member: max5moritz
max5moritz May 20, 2010 at 18:49:41 (UTC)
Goto Top
@alle
Danke an alle die mitgeholfen, insbesondere an @77559 und @bastla

Die Lösung für das automtische Schließen liefert VLC in der grafischen Oberfläche selbst:

man kann VLC automatisch beenden lassen nachdem das Video fertig ist, dazu unter den Einstellungen alle Optionen zeigen, Wiedergabeliste und ein Häckchen bei Abspielen und beenden.

gefunden dort: http://forum.ubuntuusers.de/post/2401609/

Eine andere Idee wäre: vlc:quit

gefunden dort: http://www.winfuture-forum.de/index.php?act=Print&client=printer&am ...

Nur wie ich den Befehl vlc:
quit direkt in die BAT einbaue, das weiss ich leider nicht.
Wer noch mag, kann mir da noch gern auf die Sprünge helfen. 'face-wink

Ich betrachte somit diesen Teil als gelöst. Nochmal die komplette Lösung:

@echo off
cls
setlocal
set "Datei=D:\audio\quelle.txt"  

for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
echo %~1|findstr /b "#EXTINF" && (  
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof)  
Set "Name=%Name::=_%"  
for /f "delims=" %%i in (%1) do (  
   "C:\Video\VLC\vlc.exe" %1 :sout=#transcode{acodec=mp3,ab=64,channels=1}:duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}}  
)
goto :eof

Hinweis: #transcode{acodec=mp3,ab=64,channels=1} ist in mono 64 kb/s
#transcode{acodec=mp3,ab=128,channels=2} ist in stereo 128 kb/s

So long,
max5moritz
Mitglied: 77559
77559 May 20, 2010 at 19:04:15 (UTC)
Goto Top
Zitat von @max5moritz:
Eine andere Idee wäre: vlc:quit
Nur wie ich den Befehl vlc:
quit direkt in die BAT einbaue, das weiss ich leider nicht.
Der würde ja normal in der m3u stehen,
hänge ihn doch mal versuchsweise einfach hinter dem :Sout... hinten an.

Gruß
Lotpings