Batch Datei zum Starten und Schließen

Chiller2005

Lieutenant
Dabei seit
Apr. 2005
Beiträge
786
Servus Leute,

ich wollte mir eine .bat schreiben mit der ich mehrere Programme starten und beenden kann.
Das mit dem starten habe ich hinbekommen, nur für das Beenden finde ich nicht den richtigen Befehl.

Wäre Super wenn mir Jemand helfen kann.

Hier mal der Inhalt der Datei :

start "" "D:\Gamezz\Steam\Steam.exe"
start "" "D:\Program Files (x86)\ICQ6.5\ICQ.exe"
start "" "D:\Program Files (x86)\Skype\Phone\Skype.exe"
start "" "D:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"

Starten klappt wunderbar.
Wie muss das aussehen um die Programme zu Beenden?

mfg

chiller
 

Grugeschu

Lt. Commander
Dabei seit
Juli 2006
Beiträge
1.633
taskkill /?

Edit:
HLK ist mir zuvorgekommen :(

Andere Möglichkeiten wären Oberflächenscripts mit Autoit oder VBScript.
 
Zuletzt bearbeitet:

CruSherFL

Ensign
Dabei seit
Sep. 2008
Beiträge
148
pstools (von microsoft) runterladen und dann mit pskill.exe
 

Chiller2005

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2005
Beiträge
786
bei taskkill zu sich gar nichts, schaut jetzt so aus :

start "" "D:\Gamezz\Steam\Steam.exe"
start "" "D:\Program Files (x86)\ICQ6.5\ICQ.exe"
start "" "D:\Program Files (x86)\Skype\Phone\Skype.exe"
start "" "D:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"

taskkill "" "D:\Gamezz\Steam\Steam.exe"
taskkill "" "D:\Program Files (x86)\ICQ6.5\ICQ.exe"
taskkill "" "D:\Program Files (x86)\Skype\Phone\Skype.exe"
taskkill "" "D:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"

EDIT: hab windows 7 x64, weiß nicht ob es relevant ist.
 

Dunkelschwinge

Admiral
Dabei seit
Apr. 2008
Beiträge
9.016
@Chiller2005

Die Syntax deines Taskkills stimmt nicht, lies den post darüber nochmal und nimm die Parameter mit...
 

Chiller2005

Lieutenant
Ersteller dieses Themas
Dabei seit
Apr. 2005
Beiträge
786
EDIT:

Besten Dank es Funktioniert!

Einmal run.bat :

start "" "D:\Gamezz\Steam\Steam.exe"
start "" "D:\Program Files (x86)\ICQ6.5\ICQ.exe"
start "" "D:\Program Files (x86)\Skype\Phone\Skype.exe"
start "" "D:\Program Files\TeamSpeak 3 Client\ts3client_win64.exe"

und einmal close.bat :

taskkill /F /IM Steam.exe
taskkill /F /IM ICQ.exe
taskkill /F /IM Skype.exe
taskkill /F /IM ts3client_win64.exe
 
Zuletzt bearbeitet:

o0Julia0o

Lt. Commander
Dabei seit
Dez. 2012
Beiträge
1.476
Und wie beende ich Steam nach dem ich das Spiel beendet habe autoamtisch wieder? So wird das Spiel erst gar nicht gestartet, weil Steam direkt wieder beendet wird:

Code:
@echo off
start steam://rungameid/320040
taskkill /F /IM Steam.exe
exit
Mache ich das gleiche mit einer exe, dann wartet taskkill bis, ich die exe beendet habe. Also so wie ich das möchte:
Code:
@echo off
"D:\Steam\SteamApps\common\Moon Hunters\moonhunters.exe"
taskkill /F /IM Steam.exe
exit
 

ryan_blackdrago

Captain
Dabei seit
Nov. 2006
Beiträge
3.778
Die exe wird wohl schneller abgearbeitet, als der Weg über die Steam-ID. Wenn man den Steam-Link im Browser eingibt, wird dieser erst über den Steam Client Bootstrapper geöffnet (so bei der Batch wohl auch?!)

Das ist auch zu langsam:
Code:
@echo off
D:\Steam\Steam.exe -applaunch 320040
taskkill /F /IM Steam.exe
pause
Einen Timeout einbauen:
Code:
@echo off
start steam://rungameid/320040
timeout 10
taskkill /F /IM Steam.exe
exit
 

o0Julia0o

Lt. Commander
Dabei seit
Dez. 2012
Beiträge
1.476
Danke Dir, ryan! Das funktioniert auch nur halb. Das Spiel wird gestartet & bleibt gestartet, doch nach 10 Sekunden schließt Steam wieder. Steam soll aber erst geschlosen werden, wenn das Spiel geschlossen wird. Wenn ich die Spiel.exe in die Batch schreiben würde, klappt das.
Code:
@echo off
"D:\Steam\SteamApps\common\Moon Hunters\moonhunters.exe"
echo Jetzt würe "taskkill /F /IM Steam.exe" ausgeführt. Also erst wenn ich die moonhunters.exe beende.
exit
Jedoch startet dann ja Steam nicht, was einige Spiele nicht mögen.
 

heulendoch

Ensign
Dabei seit
Feb. 2014
Beiträge
157
Mit dem Code startest du moonhunters als Kindprozess der CMD, oder? Deshalb wartet das Script bis Moonhunters "fertig ist" du es also beendest.

Bau eine Schleife mit Timeout und schau in der mit tasklist nach ob Moonhunters noch läuft, wenn nicht Steam killen.
Ergänzung ()

Also Pseudocode:
start Steam app
Timeout 10
while(tasklist /xx moonhunters.exe == true) Timeout 10
kill Steam
 
Zuletzt bearbeitet:

o0Julia0o

Lt. Commander
Dabei seit
Dez. 2012
Beiträge
1.476
Danke Dir heulendoch! So habe ich das jetzt probiert:
Code:
@echo off
start steam://rungameid/320040
timeout 30
while(tasklist /xx moonhunters.exe == true) timeout 10
taskkill /F /IM Steam.exe
Das ist das Ergebnis:
Code:
Gewartet wird  0 Sekunden. Weiter mit beliebiger Taste...
Der Befehl "while" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
ERFOLGREICH: Der Prozess "Steam.exe" mit PID 3192 wurde beendet.
1. Das Spiel wird gestartet.
2. Steam wird beendet.
3. Das Spiel läuft noch.

Moonhunters beenden kann ich so:
Code:
@echo off
taskkill /F /IM Moonhunters.exe
exit
Das Ziel wäre aber:
1. Das Spiel wird gestartet
2. Steam bleibt gestartet
3. Das Spiel wird manuell beendet
4. Steam wird automatisch beendet
 

ryan_blackdrago

Captain
Dabei seit
Nov. 2006
Beiträge
3.778
Bitte den Befehlssatz für Batch beachten : while => wenn schon ausgeworfen wird, daß der Befehl falsch geschrieben oder nicht gefunden wurde, ne ne ne.

Anhand vom Spiel Sentinels of the Multiverse:
Code:
@echo off
"C:\GAMES\Steam\steamapps\common\Sentinels of the Multiverse\Sentinels.exe"

:ANFANG
tasklist /FI "IMAGENAME eq Sentinels.exe" 2>NUL | find /I /N "Sentinels.exe">NUL
if "%ERRORLEVEL%"=="1" taskkill /F /IM steam.exe && EXIT
GOTO ANFANG
 

o0Julia0o

Lt. Commander
Dabei seit
Dez. 2012
Beiträge
1.476
Supi! Danke!! So klappt es:
Code:
@echo off
start steam://rungameid/320040
timeout 30
:ANFANG
tasklist /FI "IMAGENAME eq Moonhunters.exe" 2>NUL | find /I /N "Moonhunters">NUL
if "%ERRORLEVEL%"=="1" taskkill /F /IM steam.exe && EXIT
GOTO ANFANG
exit
Ich blicke nicht so ganz durch, was die Zeile nach :ANFANG macht. Ist das sehr rechenaufwändig? Könnte man z.B. eine höhere Frequenz einstellen um Rechenzeit zu sparen? Es ist völlig egal, ob jede Sekunde oder jede Minute überprüft wird, ob die Moonhunters.exe noch läuft. Beduetet "2>NUL" -> alle 2 Sekunden wird überprüft?
 

o0Julia0o

Lt. Commander
Dabei seit
Dez. 2012
Beiträge
1.476
ah danke. Also wenn ich ein Timeout for GOTO ANFANG setze, dann setze ich den Rechenaufwand herunter? Weil ansonsten die Schleife quasi im millisekundenbereich überprüft ob Moonhunters.exe noch läuft?
 

heulendoch

Ensign
Dabei seit
Feb. 2014
Beiträge
157
Genau, ansonsten würde geprüft ob die EXE noch läuft und das immer wieder ohne Pause. Mit Timeout an der Position machst du eine Pause vor der nächsten Prüfung.
 

ryan_blackdrago

Captain
Dabei seit
Nov. 2006
Beiträge
3.778
2>NUL
anhängen, um Fehlermeldungen zu untertdrücken

:Anfang
GOTO Anfang
Damit kann man einen Befehl in eine Dauerschleife versetzen, indem das Programm, von der Zeile GOTO entsprechend wieder dahinspringt

Timeout
Der Timeout muß in die Schleife, da ja sonst das Programm nur einmalig verzögert. In der Schleife wird die Ausführung dann immer wieder entsprechend verzögert.

start moonhunters
timeout
:Anfang
GOTO Anfang
=> da wird einmalig ein Timeout gemacht (wegen der :ANFANG-Dauerschleife)

start moonhunters
:Anfang
timeout
GOTO Anfang
=> laufend, da der timeout in der Dauerschleife ist
 
Top