- Sie verwenden nicht "Option Explicit"; das ist leichtsinnig.
- Sie nicht in der Nähe/unmittelbar nach Ihrer Dims; das ist fehleranfällig.
- Sie verwenden Variablen (objShell) nur einmal; das ist verschwenderisch.
- Sie mischen Datentypen (Ganzzahl vs Zeichenfolge) in einem Vergleich; das ist blöd.
- Sie lesen die Dokumente nicht (sorgfältig); das ist unverschämt.
Vom Docs:
bWaitOnReturn
Optional. Boolescher Wert, der angibt, ob das Skript auf warten soll, bis das Programm die Ausführung beendet hat, bevor es mit der nächsten Anweisung in Ihrem Skript fortgesetzt wird. Wenn der Wert auf "true" festgelegt ist, wird die Skriptausführung angehalten, bis das Programm beendet wird und "Run" den vom Programm zurückgegebenen Fehlercode zurückgibt. Wenn sie auf false gesetzt ist (der Standardwert), gibt die Run-Methode unmittelbar nach dem Start des Programms aus und gibt automatisch 0 zurück (nicht , um als Fehlercode interpretiert zu werden).
Um unnötigen Probleme durch fehlende dcdiag oder verschiedene Versionen von findstr oder mis Verständnis/Nutzung dieser Programme verursacht zu vermeiden, ich "minimal Errorlevel-Setter" verwenden:
type ex0.vbs, ex1.vbs
ex0.vbs
WScript.Quit 0
ex1.vbs
WScript.Quit 1
und diesen Code:
Option Explicit
Dim consult : consult = WScript.CreateObject("WScript.Shell").Run("%comspec% /c ex0.vbs | ex1.vbs", 0, True)
If consult = "0" THEN
WScript.Echo consult, "OK"
else
WScript.Echo consult, "ERROR"
end If
Ausgang:
cscript 36531325.vbs
1 ERROR
Verwenden
.Run("ex0.vbs | ex1.vbs", 0, True)
zu sehen, dass Sie eine Shell (% comspec%) benötigen eine Shell-Funktionen zu verwenden (|) und
.Run("%comspec% /c ex0.vbs | ex1.vbs", 0)
für eine besseres Verständnis der Bedeutung des bWaitOnReturn Parameters.