Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch-File zum Auslesen von Playlist für VLC

Frage Entwicklung Batch & Shell

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

18.05.2010, aktualisiert 18.10.2012, 7465 Aufrufe, 25 Kommentare

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.
Mitglied: bastla
18.05.2010 um 21:29 Uhr
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
Bitte warten ..
Mitglied: max5moritz
18.05.2010 um 21:58 Uhr
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!
Bitte warten ..
Mitglied: LotPings
18.05.2010 um 22:12 Uhr
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
Bitte warten ..
Mitglied: LotPings
18.05.2010 um 22:27 Uhr
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

Gruß
LotPings
Bitte warten ..
Mitglied: max5moritz
18.05.2010 um 22:34 Uhr
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
Bitte warten ..
Mitglied: LotPings
18.05.2010 um 22:41 Uhr
Ich wußte ja auch vorher nicht,
wie sich bei dir verhält.

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

Gruß
LotPings
Bitte warten ..
Mitglied: max5moritz
18.05.2010 um 23:19 Uhr
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
Bitte warten ..
Mitglied: 60730
18.05.2010 um 23:29 Uhr
Servus,

01.
 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"
Bitte warten ..
Mitglied: max5moritz
18.05.2010 um 23:43 Uhr
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).
Bitte warten ..
Mitglied: LotPings
19.05.2010 um 00:12 Uhr
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

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 Code Tags 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
Bitte warten ..
Mitglied: bastla
19.05.2010 um 07:47 Uhr
Hallo LotPings!
@bastla, ich hoffe ich funke dir nicht dazwischen
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 ), 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 ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
19.05.2010 um 08:25 Uhr
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ß
Bitte warten ..
Mitglied: max5moritz
19.05.2010 um 09:02 Uhr
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. und freue mich schon auf Eure kompetenten Antworten.

Gruß
max5moritz
Bitte warten ..
Mitglied: Biber
19.05.2010 um 21:22 Uhr
Moin max5moritz,

Ich versuch noch mal ein wenig Feintuning an der Codeformatierung...
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.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:
01.
for /F "delims=" %%A IN ('findstr /i /b "http" "D:\audio\quelle.txt"') do ( 
02.
        for /f  "tokens=2 delims=_" %%i in ("%%A") do  (  
03.
            "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}} 
04.
05.
)         
... 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.

01.
for /F "delims=" %%A IN ('findstr /i /b "http" "D:\audio\quelle.txt"') do ( 
02.
        for /f  "tokens=2 delims=_" %%i in ("%%A") do  (  
03.
            "C:\Video\VLC\vlc.exe" ^ 
04.
                       --intf dummy "%%A" ^ 
05.
                       :sout=#transcode{acodec=mp3,ab=64,channels=1}^ 
06.
                       :duplicate{dst=std{access=file,mux=raw,dst=D:\Medien\Audio\%%~ni.mp3}} 
07.
08.
) 
Grüße
Biber
Bitte warten ..
Mitglied: bastla
19.05.2010 um 21:56 Uhr
Hallo @All!

Da ja nun jeweils 2 Zeilen zu verabeiten sind, ein neuer (ungetesteter) Ansatz:
01.
@echo off & setlocal 
02.
set "Datei=D:\audio\quelle.txt" 
03.
 
04.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i" 
05.
goto :eof 
06.
 
07.
:ProcessLine 
08.
echo %~1|findstr /b "#EXTINF" && (for /f "tokens=1* %%a in (%1) do set "Name=%%b" & goto :eof) 
09.
for /f "tokens=2 delims=_" %%i in (%1) do ( 
10.
            "C:\Video\VLC\vlc.exe" ^  
11.
                       --intf dummy %1 ^  
12.
                       :sout=#transcode{acodec=mp3,ab=64,channels=1}^  
13.
                       :duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}} 
14.
15.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: max5moritz
19.05.2010 um 22:40 Uhr
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
Bitte warten ..
Mitglied: bastla
19.05.2010, aktualisiert 18.10.2012
Hallo max5moritz!

Dann also eher:
01.
@echo off & setlocal 
02.
set "Datei=D:\audio\quelle.txt" 
03.
 
04.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i" 
05.
goto :eof 
06.
 
07.
:ProcessLine 
08.
echo %~1|findstr /b "#EXTINF" && (for /f "tokens=1* %%a in (%1) do set "Name=%%b" & goto :eof)  
09.
for /f "tokens=2 delims=_" %%i in (%1) do (  
10.
    "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"}} 
11.
12.
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]
Bitte warten ..
Mitglied: max5moritz
19.05.2010 um 23:12 Uhr
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 , den vollen Text zweier Doppelzeilen

#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_ ...
#EXTINF:0,150. Lichterglanz und Stille 13.12.2009
http://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
Bitte warten ..
Mitglied: max5moritz
19.05.2010 um 23:47 Uhr
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 verarbeitbar

D:\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
Bitte warten ..
Mitglied: LotPings
20.05.2010 um 00:21 Uhr
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.

01.
@echo off 
02.
cls 
03.
setlocal 
04.
set "Datei=D:\audio\quelle.txt" 
05.
 
06.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
echo %~1|findstr /b "#EXTINF" && ( 
11.
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof) 
12.
Set "Name=%Name::=_%" 
13.
for /f "delims=" %%i in (%1) do ( 
14.
  Echo "C:\Video\VLC\vlc.exe" ^ 
15.
    --intf dummy %1 ^ 
16.
    :sout=#transcode{acodec=mp3,ab=64,channels=1}^ 
17.
    :duplicate{dst=std{access=file,mux=raw,dst="D:\Medien\Audio\%Name%.mp3"}} 
18.
19.
goto :eof
Gruß
Lotpings

PS so richtig klappt das bei dir mit den < code > und </ code > Tags aber noch nicht.
Bitte warten ..
Mitglied: 60730
20.05.2010 um 00:36 Uhr
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.

01.
 Klick mich 
Klickmich

01.
#EXTINF:0,143. Am Sonntagmorgen: Willi Fährmann zum 80. Geburtstag 20.12.2009 
02.
http://ondemand-mp3.dradio.de/file/dradio/2009/12/20/dlf_20091220_0835_be89765a.mp3 
03.
#EXTINF:0,150. Lichterglanz und Stille 13.12.2009 
04.
http://ondemand-mp3.dradio.de/file/dradio/2009/12/13/dlf_20091213_0835_810df7e4.mp3
Gruß
Bitte warten ..
Mitglied: max5moritz
20.05.2010 um 01:15 Uhr
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:

01.
@echo off 
02.
cls 
03.
setlocal 
04.
set "Datei=D:\audio\quelle.txt" 
05.
 
06.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
echo %~1|findstr /b "#EXTINF" && ( 
11.
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof) 
12.
Set "Name=%Name::=_%" 
13.
for /f "delims=" %%i in (%1) do ( 
14.
   "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"}} 
15.
16.
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
Bitte warten ..
Mitglied: max5moritz
20.05.2010 um 01:24 Uhr
Danke für den Wink .-)
Ich werd's beherzigen.
So long
Bitte warten ..
Mitglied: max5moritz
20.05.2010 um 20:49 Uhr
@Alle
Danke an alle die mitgeholfen, insbesondere an @LotPings 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. '

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

01.
@echo off 
02.
cls 
03.
setlocal 
04.
set "Datei=D:\audio\quelle.txt" 
05.
 
06.
for /f "usebackq delims=" %%i in ("%Datei%") do call :ProcessLine "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessLine 
10.
echo %~1|findstr /b "#EXTINF" && ( 
11.
  for /f "tokens=1*" %%a in (%1) do set "Name=%%b" & goto :eof) 
12.
Set "Name=%Name::=_%" 
13.
for /f "delims=" %%i in (%1) do ( 
14.
   "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"}} 
15.
16.
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
Bitte warten ..
Mitglied: LotPings
20.05.2010 um 21:04 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst BATCH Element aus XML-File auslesen (9)

Frage von pappkamerad zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
"Generic" Drucker mit batch - File erstellen (6)

Frage von MrPreesident zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...