Per Batch komplexe Sache machen

eightcore

Lt. Commander
🎅Rätsel-Elite ’25
Registriert
Juli 2008
Beiträge
1.700
Guten Abend.

Ich möchte per Batch zwei Programme starten. Die Schwierigkeit: Das zweite Programm sollte sich beenden, wenn das erste Programm geschlossen wurde.

Gibts da in der Windows-Kommandozeile eine Möglichkeit?

MfG | eightcore
 
ich hab das zum beispiel für mein acronis so gelöst:

Code:
echo off

rem scheduler-service und scheduler

net stop "AcrSch2Svc"

rem wartezeit 2 sekunden
 
ipconfig | find /i "ip-adresse"  
ping /n 3 localhost >nul  

rem monitor beenden

taskkill /im trueimagemonitor.exe /F

zuerst wird hier der scheduler-service beendet
dann 2 sekunden warten
dann der trueimagemonitor beendet

könnte im prinzip ne lösung für dein problem sein.
 
Du kannst mit Tasklist abfragen ob Programm X läuft z.b. über den Abbildnamen.
Nun noch mit if errorlevel das ergebniss vom tasklist abfragen und dein taskkill ausführen.

mfg
 
das hier ist eine sehr, sehr, sehr vereinfachtes Beispiel, der Veranschaulichen soll wie es gehen könnte
Code:
@echo off & setlocal 

title Prozess beenden
color F1

start calc.exe
start notepad.exe

set Programm=calc.exe
set Programm2=notepad.exe

:start

tasklist |find /i "%Programm%" >nul

if %errorlevel% == 0 (
echo Das Programm "%Programm%" leauft gerade!
ping /n 5 localhost >nul 
goto start
) else (
echo Das Programm "%Programm%" leauft gerade nicht!
goto taskkill
)

:taskkill
TaskKill /IM %Programm2%
pause
abspeichern als bz. programm.bat Notepad und Rechner werden gestartet, warte paar Durchläufe und Beende den Rechner, danach wird auch das Notepad geschlossen


Du könntest es natürlich auch per PID machen, dazu muss du die PID des Programm herausfinden, diese zb. in eine temp.datei schreiben und wenn Programm xyz nicht mehr läuft, wird auch Programm abc geschlossen.
 
Zuletzt bearbeitet:
mit Batch(.bat) würde ich es heute nicht mehr machen, Beispiel per VB Script(.vbs):

Code:
Option Explicit

dim shell, Application, App2

set shell = CreateObject("WScript.Shell")
set Application = Shell.Exec("calc")
set App2 = Shell.Exec("notepad")


Do While Application.Status = 0

WScript.Sleep 100

Loop

shell.run "taskkill /F /IM Notepad.exe", 0, true
 
Mit VB kann ich es nicht machen, weil bei mir der Script Host im Arsch ist.
Habe schon alles versucht, den zu reparieren - erfolglos.

Wennschon, mach ich es mit C# - mal sehen.

Danke auf jedenfall.
 
Hai!

eightcore schrieb:
Ich möchte per Batch zwei Programme starten. Die Schwierigkeit: Das zweite Programm sollte sich beenden, wenn das erste Programm geschlossen wurde.

Gibts da in der Windows-Kommandozeile eine Möglichkeit?

Ja, gibt es.

Hier ein Beispiel, bei dem erst der Taschenrechner geöffnet wird und dann (nachdem calc geschlossen wurde) erst ipconfig ausgeführt wird.
Code:
calc.exe & ipconfig.exe

Allgemeiner gesagt:
Code:
command1 & command2

Wenn das zweite Kommando erst ausgeführt werden soll, nachdem das erste erfolgreich (iSv ERRORLEVEL ist 0) ausgeführt wurde, dann verwendet man && anstelle von & .

Gruß,
Thorsten
 
ThorstenBehrens schrieb:
Hai!



Ja, gibt es.

Hier ein Beispiel, bei dem erst der Taschenrechner geöffnet wird und dann (nachdem calc geschlossen wurde) erst ipconfig ausgeführt wird.
Code:
calc.exe & ipconfig.exe

Allgemeiner gesagt:
Code:
command1 & command2

Wenn das zweite Kommando erst ausgeführt werden soll, nachdem das erste erfolgreich (iSv ERRORLEVEL ist 0) ausgeführt wurde, dann verwendet man && anstelle von & .

Gruß,
Thorsten
Geht das gleiche auch andersherum? Also Programm1 soll sich beenden, sobald Programm2 vom User beendet wurde?
 
Zurück
Oben