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
Please also mark the comments that contributed to the solution of the article
Content-Key: 272558
Url: https://administrator.de/contentid/272558
Printed on: April 19, 2024 at 13:04 o'clock
3 Comments
Latest comment
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}"