Я сейчас запускаю VBScript из другого VBScript через WScript.Exec
, не дожидаясь его результата (который работает просто отлично):
Set ObjShell = CreateObject("WScript.Shell")
Set ShellExec = ObjShell.Exec(strFinalCommand)
Set ShellExec = Nothing
Set ObjShell = Nothing
Я только что обнаружил проблему, если у второго скрипта (который имеет свою собственную обработку ошибок внутри) есть синтаксическая проблема.
Поскольку это определяется до запуска скрипта, я не могу заметить ошибку во втором скрипте, но вместо этого должен обработать ее в первом.
Есть ли возможность проверить, не вызвал ли вызов ошибку при запуске, и - если нет, просто дать ему работать
- если есть ошибка, остановите wscript и получите текст ошибки.
Пока что я не нашел ничего по такой конкретной теме.
Я уже пробовал ShellExec.ExitCode
и ShellExec.StdErr
, но они оба обновляются только после завершения второго скрипта.
Если есть ошибка, оба не обновляются.
Я также попробовал ShellExec.SdtErr.AtEndOfStream
, который прервал мой процесс при появлении ошибки.
Edit:
Команду, которую я запускаю, составляет wscript.exe D:\\...\RunAsyncShell.vbs /ParamOne:123 /ParamTwo:ABC
с примерно на 10 параметров больше (не может показать точный вызов из-за правил компании).