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

Per Bat-File Programm starten und nach einer bestimmten Zeit wieder beenden

Frage Entwicklung Batch & Shell

Mitglied: max5moritz

max5moritz (Level 1) - Jetzt verbinden

23.05.2010, aktualisiert 18.10.2012, 8404 Aufrufe, 7 Kommentare

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:

01.
@echo off 
02.
set Ziel=%2 
03.
set Name=%3 
04.
if "n"=="n%2" goto mf1 
05.
if "n"=="n%3" goto mf1 
06.
goto m%1 
07.
 
08.
:m1 
09.
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 
10.
if not "n"=="n%4" ping -n %4 127.0.0.1 > NUL 
11.
if "n"=="n%4" goto ende 
12.
taskkill /F /IM vlc.exe 
13.
goto ende 
14.
 
15.
:m2 
16.
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 
17.
if not "n"=="n%4" ping -n %4 127.0.0.1 > NUL 
18.
if "n"=="n%4" goto ende 
19.
taskkill /F /IM vlc.exe 
20.
goto ende 
21.
 
22.
:mf1 
23.
echo Ein Parameter fehlt, das Programm wurde beendet 
24.
pause 
25.
 
26.
:ende 
27.
cls 
28.
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:

01.
#EXTINF:1,MDR Jump 
02.
http://c22033-l.i.core.cdn.streamfarm.net/22004mdrjump/live/3087mdr_jump/live_de_128.mp3 
03.
#EXTINF:2,Deutschlandfunk 
04.
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
Mitglied: bastla
23.05.2010 um 22:28 Uhr
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:
01.
set "Liste=D:\Medien\Audio\Radio\Playlist.txt" 
02.
 
03.
set "ZeilenNr=" 
04.
for /f "delims=:" %%i in ('findstr /b /n "#EXTINF:%1," "%Liste%"') do set /a ZeilenNr=%%i-1 
05.
if not defined ZeilenNr echo Zeile %1 nicht gefunden! & goto :eof 
06.
 
07.
set "Z1=" & set "Z2=" 
08.
for /f "delims=" %%i in ('more +%ZeilenNr% "%Liste%"') do if not defined Z2 call :ProcessLine "%%i" 
09.
 
10.
echo Hier weitere Verarbeitung von "%Z1%" und "%Z2%" ... 
11.
goto :eof 
12.
 
13.
:ProcessLine 
14.
if not defined Z1 (set "Z1=%~1" & goto :eof) 
15.
if not defined Z2 set "Z2=%~1" 
16.
goto :eof
Grüße
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" ...
Bitte warten ..
Mitglied: max5moritz
23.05.2010 um 23:56 Uhr
Danke! Super! Genauso sollte es sein!

Wie bekomme ich den blauen Teil #EXTINF_1,MDR Jump_test1 aus dem Dateinamen?

Grüße
m5m
Bitte warten ..
Mitglied: bastla
24.05.2010 um 00:01 Uhr
Hallo m5m!

Soferne Du (vermutlich) auch das Komma nicht benötigst, einfach so:
for /f "tokens=1* delims=," %%i in ("%Z1%") do set "Titel=%%j"
- bei Bedarf könntest Du das Komma aber natürlich in das Ergebnis auch wieder "einbauen":
for /f "tokens=1* delims=," %%i in ("%Z1%") do set "Titel=,%%j"
Grüße
bastla
Bitte warten ..
Mitglied: LotPings
24.05.2010 um 11:27 Uhr
Zitat von bastla:
[OT]
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" ...

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.
01.
::Example.cmd::::::::::::::::::::::::::::::::::::::::::::::::: 
02.
@echo off&setlocal 
03.
for %%A in (one two fail three) do call :sub %%A||goto :abort 
04.
:abort 
05.
goto :eof 
06.
:sub 
07.
echo %1 
08.
set retErr=0 
09.
if "%1" EQU "fail" set retErr=1 
10.
exit /B %retErr% 
11.
::Example.cmd:::::::::::::::::::::::::::::::::::::::::::::::::
[/OT]

Gruß
LotPings
Bitte warten ..
Mitglied: 60730
24.05.2010, aktualisiert 18.10.2012
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.

http://www.administrator.de/forum/at-job-zu-einem-beliebigen-%28unbekan ...
@Biber: du solltest dir die batch.com besorgen, die ist anscheinend frei - Biber@batch.com - was ne aussagekräftige emilie
Bitte warten ..
Mitglied: bastla
24.05.2010 um 12:59 Uhr
@LotPings
[OT]
... Rückgabe eines Errorlevels ...
Das war mit meinem (etwas verkürzten) ... nur mit einem "/B" ... gemeint ...
{/OT]

Grüße
bastla
Bitte warten ..
Mitglied: max5moritz
25.05.2010 um 10:27 Uhr
@alle
Danke für die tollen Ergänzungen. Das mit dem taskkill hatte ich mir schon überlegt. Da kann ich die PID gut gebrauchen. Für alle die einen Timer in einer Batch brauchen, folgende Lösung, gefunden By nero-chrischi, ein wenig modifiziert von mir, da ich davon ausgehe, dass der Timer per call öfter gebraucht wird:
01.
@echo off 
02.
if exist %pd%wait%1.vbs goto end 
03.
echo Option Explicit > %pd%wait%1.vbs 
04.
echo Dim Progr, Zeit, i, oArgs >> %pd%wait%1.vbs 
05.
echo set oArgs    = Wscript.Arguments >> %pd%wait%1.vbs 
06.
echo For  i = 0 to oArgs.Count - 1 >> %pd%wait%1.vbs 
07.
echo If i = 0 Then Zeit      =         oArgs.item(i) >> %pd%wait%1.vbs 
08.
echo Next >> %pd%wait%1.vbs 
09.
echo If InStr( Zeit, "." ) Then Zeit = Left( Zeit, InStr( Zeit, "." ) -1 ) >> %pd%wait%1.vbs 
10.
echo If InStr( Zeit, "," ) Then Zeit = Left( Zeit, InStr( Zeit, "," ) -1 ) >> %pd%wait%1.vbs 
11.
echo On Error Resume Next >> %pd%wait%1.vbs 
12.
echo Zeit = Zeit / 10*10 >> %pd%wait%1.vbs 
13.
echo On Error GoTo 0 >> %pd%wait%1.vbs 
14.
echo WScript.Sleep Zeit*1000 >> %pd%wait%1.vbs 
15.
echo If Progr = "" Then WScript.Quit >> %pd%wait%1.vbs 
16.
echo WScript.CreateObject("WScript.Shell").Run Progr >> %pd%wait%1.vbs 
17.
:end 
18.
 
19.
rem   ------------------------------------------------------ 
20.
rem   .-'Nun die Befehle'-. 
21.
rem   Die Zahl nach der %pd%wait%1.vbs sind die wartenden Sekunden 
22.
rem   Keine Zahl Bedeuten ca. 0.1 Sek 
23.
rem   ------------------------------------------------------ 
24.
 
25.
echo   Das Programm %1 läuft noch, bitte warten ... 
26.
echo. 
27.
echo   Timer ist nach %2 s abgelaufen! 
28.
echo. 
29.
%pd%wait%1.vbs %2 
30.
cls 
31.
del %pd%wait%1.vbs 
32.
goto :eof
Die Parameter %pd% und %1 sowie %2 werden von der aufrufenden Batch übergeben.
Der erste übernimmt den Pfad von der aufrufenden Batch, falls man die Batch per Task-Planer starten möchte,
der Zweite macht den Timer unterscheidbar, nicht das nachher ein weiterer Aufruf den ersten killt und %2 legt die Laufzeit in Sekunden fest.

Das Problem ist also gelöst, Danke nochmals und

So long,
max5moritz
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Programm in Benutzersitzung beenden wenn Desktop gesperrt (2)

Frage von pixel0815 zum Thema Batch & Shell ...

Windows 10
Durch einschalten des xbox one controller ein programm starten (3)

Frage von xsoerenx zum Thema Windows 10 ...

Sicherheitsgrundlagen
Programm ohne UAC und Administratorrechte starten (3)

Anleitung von agowa338 zum Thema Sicherheitsgrundlagen ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...