goodbytes
Goto Top

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:
oShell.Run "C:\Windows\System32\cmd.exe /c " & "D:\MeineBatch.cmd", 0, vbTrue  

Gruß
Torsten

Content-Key: 272558

Url: https://administrator.de/contentid/272558

Printed on: April 16, 2024 at 04:04 o'clock

Member: colinardo
Solution colinardo May 21, 2015 updated at 12:47:49 (UTC)
Goto Top
Hallo Torsten,
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
oder auch mit Powershell ein Einzeiler:
powershell -ExecutionPolicy ByPass -Command "&{$proc = Start-Process 'C:\DeineBatch.cmd' -PassThru; $proc | Wait-Process -Timeout 120 -EA SilentlyContinue; kill $proc -EA SilentlyContinue}"  
Grüße Uwe
Member: goodbytes
goodbytes May 21, 2015 at 12:48:19 (UTC)
Goto Top
Hallo Uwe,
funktioniert bestens, vielen Dank !!! face-smile

Gruß
Torsten
Member: goodbytes
goodbytes May 21, 2015 at 12:49:10 (UTC)
Goto Top
Mit der Powershell ist es natürlich sehr kompakt, aber ich wollte es gerne mit vbs machen.
Danke!