Per Bat-File Programm starten und nach einer bestimmten Zeit wieder beenden
Servus und Frohe Pfingsten,
ich bitte um Eure Mithilfe, Danke im Voraus.
ich möchte per BAT den VLC starten und nach einer Zeitvorgabe, kann zwischen 5 min und 1 - 2 stunden liegen, wieder beenden.
Der Aufruf ist ja per Taskmanager möglich. Warum dann BAT? Weil ich die Parameter dann flexibel übergeben kann.
Hier mein Entwurf:
Was sicher nicht wirklich gut gelöst ist, ist der Timer via
Für kurze Zeiten (bis 5 min) vielleicht eine Lösung, doch für 1 - 2 Stunden?
Auch sollten die
zum Einsatz kommen soll. Nur soll diesmal nur ein Zeilenpaar gefunden und ausgewertet werden, wobei der Parameter %1 die Zahl hinter
Da VLC sich nur widerwillig beenden läßt, deshalb der
Für den Fall das Parameter %4 absichtlich vergessen wurde, dient die Abfrage in
Dann läuft der VLC bis ultimo oder die Festplatte überquillt
Für Anregungen und Hilfestellungen danke ich jetzt schon.
So long
max5moritz
ich bitte um Eure Mithilfe, Danke im Voraus.
ich möchte per BAT den VLC starten und nach einer Zeitvorgabe, kann zwischen 5 min und 1 - 2 stunden liegen, wieder beenden.
Der Aufruf ist ja per Taskmanager möglich. Warum dann BAT? Weil ich die Parameter dann flexibel übergeben kann.
Hier mein Entwurf:
@echo off
set Ziel=%2
set Name=%3
if "n"=="n%2" goto mf1
if "n"=="n%3" goto mf1
goto m%1
:m1
start /w C:\Video\VLC\vlc.exe -vvv http://www.dradio.de/streaming/dlf.m3u --sout file/ps:D:\Medien\Audio\Radio\%ziel%\%name%.ps
if not "n"=="n%4" ping -n %4 127.0.0.1 > NUL
if "n"=="n%4" goto ende
taskkill /F /IM vlc.exe
goto ende
:m2
start C:\Video\VLC\vlc.exe -vvv http://gffstream.ic.llnwd.net/stream/gffstream_w19a --sout file/ps:D:\Medien\Audio\Radio\%ziel%\%name%.ps
if not "n"=="n%4" ping -n %4 127.0.0.1 > NUL
if "n"=="n%4" goto ende
taskkill /F /IM vlc.exe
goto ende
:mf1
echo Ein Parameter fehlt, das Programm wurde beendet
pause
:ende
cls
exit
Was sicher nicht wirklich gut gelöst ist, ist der Timer via
ping
Für kurze Zeiten (bis 5 min) vielleicht eine Lösung, doch für 1 - 2 Stunden?
Delay
habe ich probiert, geht aber nicht.Auch sollten die
goto m%1
durch ein Schleifchen ersetzt werden, da dort eigentlich wieder eine Liste im Aufbau wie folgt:#EXTINF:1,MDR Jump
http://c22033-l.i.core.cdn.streamfarm.net/22004mdrjump/live/3087mdr_jump/live_de_128.mp3
#EXTINF:2,Deutschlandfunk
http://dradio.ic.llnwd.net/stream/dradio_dlf_m_a
zum Einsatz kommen soll. Nur soll diesmal nur ein Zeilenpaar gefunden und ausgewertet werden, wobei der Parameter %1 die Zahl hinter
#EXTINF:
sein soll.Da VLC sich nur widerwillig beenden läßt, deshalb der
taskkill
-Befehl.Für den Fall das Parameter %4 absichtlich vergessen wurde, dient die Abfrage in
Zeile 11 / 18
:Dann läuft der VLC bis ultimo oder die Festplatte überquillt
Für Anregungen und Hilfestellungen danke ich jetzt schon.
So long
max5moritz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143417
Url: https://administrator.de/contentid/143417
Ausgedruckt am: 21.11.2024 um 21:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo max5moritz!
Eine elegantere Pause lässt sich mit der "sleep.exe" aus den Windows Server 2003 Resource Kit Tools erzeugen ...
Wie soll denn die "Auswertung" des Zeilenpaares erfolgen? Das Auslesen lässt sich etwa so umsetzen:
Grüße
bastla
P.S.: Ein "
Eine elegantere Pause lässt sich mit der "sleep.exe" aus den Windows Server 2003 Resource Kit Tools erzeugen ...
Wie soll denn die "Auswertung" des Zeilenpaares erfolgen? Das Auslesen lässt sich etwa so umsetzen:
set "Liste=D:\Medien\Audio\Radio\Playlist.txt"
set "ZeilenNr="
for /f "delims=:" %%i in ('findstr /b /n "#EXTINF:%1," "%Liste%"') do set /a ZeilenNr=%%i-1
if not defined ZeilenNr echo Zeile %1 nicht gefunden! & goto :eof
set "Z1=" & set "Z2="
for /f "delims=" %%i in ('more +%ZeilenNr% "%Liste%"') do if not defined Z2 call :ProcessLine "%%i"
echo Hier weitere Verarbeitung von "%Z1%" und "%Z2%" ...
goto :eof
:ProcessLine
if not defined Z1 (set "Z1=%~1" & goto :eof)
if not defined Z2 set "Z2=%~1"
goto :eof
bastla
P.S.: Ein "
exit
" ist eigentlich nur mit einem "/B" (was hier aber vermutlich nicht benötigt wird) sinnvoll (und ansonsten beim Testen nur lästig) - gezielt beenden lässt sich ein Batch auch mit "goto :eof
" ...
Hallo m5m!
Soferne Du (vermutlich) auch das Komma nicht benötigst, einfach so:
- bei Bedarf könntest Du das Komma aber natürlich in das Ergebnis auch wieder "einbauen":
Grüße
bastla
Soferne Du (vermutlich) auch das Komma nicht benötigst, einfach so:
for /f "tokens=1* delims=," %%i in ("%Z1%") do set "Titel=%%j"
for /f "tokens=1* delims=," %%i in ("%Z1%") do set "Titel=,%%j"
bastla
[OT]
In diesem Fall stimme ich dir zu bastla,
aber wenn in einer Sub eine Abbruchbedingung festgestellt wird, nützt Goto :Eof nichts.
Dort kann man Exit aber schön benutzen um über die Rückgabe eines Errorlevels den
Hauptbatch zum Beenden/andere Aktion zu veranlassen.
[/OT]
Gruß
LotPings
P.S.: Ein "
sinnvoll (und ansonsten beim Testen nur lästig)
- gezielt beenden lässt sich ein Batch auch mit "
exit
" ist eigentlich nur mit einem "/B" (was hier aber vermutlich nicht benötigt wird)sinnvoll (und ansonsten beim Testen nur lästig)
- gezielt beenden lässt sich ein Batch auch mit "
goto :eof
" ...In diesem Fall stimme ich dir zu bastla,
aber wenn in einer Sub eine Abbruchbedingung festgestellt wird, nützt Goto :Eof nichts.
Dort kann man Exit aber schön benutzen um über die Rückgabe eines Errorlevels den
Hauptbatch zum Beenden/andere Aktion zu veranlassen.
::Example.cmd:::::::::::::::::::::::::::::::::::::::::::::::::
@echo off&setlocal
for %%A in (one two fail three) do call :sub %%A||goto :abort
:abort
goto :eof
:sub
echo %1
set retErr=0
if "%1" EQU "fail" set retErr=1
exit /B %retErr%
::Example.cmd:::::::::::::::::::::::::::::::::::::::::::::::::
Gruß
LotPings
Servus,
Biber hat mal einen kleineren Exkurs in Sachen AT Steuerung geschrieben, den solltest du dir mal ansehen.
Im Prinzip mußt du den nur um einen doppelten Tasklist erweitern, um die PID der gerade gestarteten VLC Instanz zu erkennen und diese Instanz dann mit Bibers AT Bausatz "kicken".
Andernfalls kickst du ja den zuerst gefundenen VLC - nicht den, den du grade kicken willst (wenn mehrere VLC aktiv sind).
Gruß
edit:
Suchst du nach Biber at Batch kommt der als erster Treffer.
AT Job zu einem beliebigen (unbekannten) Zeitpunkt in Minuten per Script starten
@Biber: du solltest dir die batch.com besorgen, die ist anscheinend frei - Biber@batch.com - was ne aussagekräftige emilie
Biber hat mal einen kleineren Exkurs in Sachen AT Steuerung geschrieben, den solltest du dir mal ansehen.
Im Prinzip mußt du den nur um einen doppelten Tasklist erweitern, um die PID der gerade gestarteten VLC Instanz zu erkennen und diese Instanz dann mit Bibers AT Bausatz "kicken".
Andernfalls kickst du ja den zuerst gefundenen VLC - nicht den, den du grade kicken willst (wenn mehrere VLC aktiv sind).
Gruß
edit:
Suchst du nach Biber at Batch kommt der als erster Treffer.
AT Job zu einem beliebigen (unbekannten) Zeitpunkt in Minuten per Script starten
@Biber: du solltest dir die batch.com besorgen, die ist anscheinend frei - Biber@batch.com - was ne aussagekräftige emilie