Batch Datei zum Programm beenden

Registriert
Okt. 2008
Beiträge
9.067
Nabend liebe ComputerBase-Community,
ich habe ein Problem und zwar würde ich gerne den Dienst radio.fx manuell starten.
dies geht ja so
echo off
set DIENSTNAME1="radio.fx"
net stop %DIENSTNAME1% 2>nul
if errorlevel 2 (
echo Dienst ist bereits gestoppt . . . Starte %DIENSTNAME1%
net start %DIENSTNAME1%
)
pause
So wird der Dienst gestartet wenn er gestoppt ist und gestoppt wenn er gestartet ist.
Nun möchte ich, dass eine exe nach 4 sec gestartet wird.
Dies würde dann ja so aussehen
echo off
ping 127.0.0.1 -n 4|echo
start rfx-client.EXE
Dafür müsste die BAT-Datei allerdings im Verzeichnis von der exe liegen.
Wie mache ich das aber beides in eine Bat-Datei?
Zudem wäre es toll, wenn ich nur eine Bat hätte. Sprich ich klicke auf die bat, dann wird der Dienst gestartet wenn er gestoppt ist, dann 4 sec später startet die exe. Wenn ich dann irgendwann wieder auf die bat-datei klicke wird beides beendet. Wie geht das?

Vielen Dank für eure Hilfe!

P.S. Windwos 7 HP wird verwendet.
 
Die 2. Batch in der ersten per call aufrufen ?
 
Code:
echo off

set DIENSTNAME1="radio.fx"

net stop %DIENSTNAME1% 2>nul

if errorlevel 2 (
echo Dienst ist bereits gestoppt . . . Starte %DIENSTNAME1%
net start %DIENSTNAME1%
)

ping 127.0.0.1 -n 4|echo

// Beende Porgramm
taskkill /F /IM "rfx-client.exe"

// Wechsle zum Laufwerk
cd C:\

// Wechsle zum Pfad
cd "Program Files\*PROGRAMMORDNER*........\"

// Starte Programm
rfx-client.EXE 

pause
 
hm irgendwie geht das nicht so richtig, denn das Programm startet sich dann wieder automatisch, also ob da eine Schleife drinne ist.
Aber schon mal vielen dank für die Mühe!
 
zuerst würde ich mal feststellen, ob das Programm läuft und danach die Routine entsprechend ausführen.

Code:
@Echo OFF&Setlocal
Set Program=NO
set DIENSTNAME1="radio.fx"

For /F "tokens=1,*" %%i IN ('Tasklist ^|Find "rfx-client.exe"') DO Set Program=YES
IF %Program%==NO (Goto Starten) Else Goto Stopen

:Starten
net start %DIENSTNAME1%
ping 127.0.0.1 -n 4
Pushd "X:\PROGRAMMORDNER"
rfx-client.exe 
Goto Ende

:Stopen
Taskkill /F /IM "rfx-client.exe"
Net Stop %DIENSTNAME1%

:Ende
Pause

Bei Pushd musst du den Programmpfad entsprechend ändern.
 
Zuletzt bearbeitet:
Vielen dank dafür, ich werde das heute Abend testen, sobald ich aus der Uni wieder zurück bin.


edit: das ist fast perfekt vielen Dank dafür!

nun bleibt aber die cmd auf und das erscheint dort, wie kann man die anschließend sich schließen lassen? Dies passiert nur, wenn ich das Programm und den Dienst starte, nicht aber, wenn ich ihn beende.
Weiterhin bleibt jetzt irgendwie rfx-tray.exe offen, diese befindet sich im selben Ordner wie die Client Datei. Die müsste dann auch geschlossen werden, wie würde das dann gehen?
 
Zuletzt bearbeitet:
ich kann das bei mir natürlich nicht unter Realbedingungen testen, da ich dieses Programm nicht installiert habe. UU. musst du die Batch mit Administratorrechten ausführen.

Taskkill /F /IM "rfx-tray.exe"

Wie hast du die Batch nun angepasst?
 
sie sieht nun so aus.
@Echo OFF&Setlocal
Set Program=NO
set DIENSTNAME1="radio.fx"

For /F "tokens=1,*" %%i IN ('Tasklist ^|Find "rfx-client.exe"') DO Set Program=YES
IF %Program%==NO (Goto Starten) Else Goto Stopen

:Starten
net start %DIENSTNAME1%
ping 127.0.0.1 -n 4
Pushd "C:\Program Files (x86)\Tobit Radio.fx\Client"
rfx-client.exe
Goto Ende

:Stopen
Taskkill /F /IM "rfx-client.exe"
Net Stop %DIENSTNAME1%

Taskkill /F /IM "rfx-tray.exe"

:Ende
pause
Vielen Dank dafür nochmal!

Das Problem ist jetzt wie gesagt noch, dass die cmd beim starten nicht zu geht. erst wenn ich den bat wieder ausführe, dann kann ich sie per beliebiger Taste schließen.
 
Zuletzt bearbeitet:
ich schätze, dass es an dem Client-Programm liegt, so das die CMD den Fokus verliert und sich deshalb nicht schliesst, weil die Batch stehen bleibt, bis das Programm beendet wird. Das würde deinen Screenshot zumindest erklären und auch warum sich die CMD beim zweiten Aufruf dann schliesst.

Man könnte jetzt mal den Befehl zum Starten des Clients ändern, in dem man

Start rfx-client.exe

einsetzt. Ansonsten kann man auch den Aufruf in einen VB Script auslagern, aber soweit sind wir noch nicht.
 
du schreibst jetzt einfach in der Zeile

rfx-client.exe

Start davor. Ist ja kein Problem, wenn man erste Gehschritte bei Batch macht.
 
Hallo,
hier vielleicht eine kleine Anmerkung:
Code:
For /F "tokens=1,*" %%i IN ('Tasklist ^|Find "rfx-client.exe"') Set Program=YES
  if %Program%==NO (
    ECHO Programm läuft nicht: %Program% und wird Gestartet
    Befehle
  ) else (
    ECHO Programm läuft und wird Beendet
    Befehle
  )
Ist ungetestet und nur als Struktur/Konstrukt vorgesehen... :cool_alt:
So kann man es später besser lesen :evillol:
 
Zurück
Oben