Vbs - Batch starten und nach Timeout Batch beenden
Hallo,
durch ein vbs-Script wird eine Batch gestartet. Das Script wartet und macht danach weiter.
Wenn aber mal ein Fehler auftritt und die Batch hängt wartet das Script natürlich ewig. Wie kann ich da ein Timeout reinbringen, das nach einer bestimmten Laufzeit der Batch versucht es "abzuschießen" und weiter geht?
So starte ich die Batch:
Gruß
Torsten
durch ein vbs-Script wird eine Batch gestartet. Das Script wartet und macht danach weiter.
Wenn aber mal ein Fehler auftritt und die Batch hängt wartet das Script natürlich ewig. Wie kann ich da ein Timeout reinbringen, das nach einer bestimmten Laufzeit der Batch versucht es "abzuschießen" und weiter geht?
So starte ich die Batch:
oShell.Run "C:\Windows\System32\cmd.exe /c " & "D:\MeineBatch.cmd", 0, vbTrue
Gruß
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 272558
Url: https://administrator.de/contentid/272558
Ausgedruckt am: 25.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
Hallo Torsten,
kannst du z.B. so machen:
oder auch mit Powershell ein Einzeiler:
Grüße Uwe
kannst du z.B. so machen:
Set objShell = CreateObject("Wscript.Shell")
' Timeout in Sekunden
intTimeout = 120
'Startzeit festhalten
dStart = Now()
'Befehl ausführen
Set oExec = objShell.Exec("cmd /c ping -t localhost")
'Warte darauf das der Befehl beendet wurde oder der Timeout abgelaufen ist
Do While oExec.Status = 0 And (Now() < DateAdd("s",intTimeout,dStart))
WScript.Sleep 100
Loop
'Wenn Prozess nach Timeout immer noch läuft, abschießen
If oExec.Status = 0 Then
oExec.Terminate
End If
powershell -ExecutionPolicy ByPass -Command "&{$proc = Start-Process 'C:\DeineBatch.cmd' -PassThru; $proc | Wait-Process -Timeout 120 -EA SilentlyContinue; kill $proc -EA SilentlyContinue}"