Я начинаю с простого VBscript для автоматизации некоторых повседневных задач, которые мне нужно выполнять на моем компьютере. Это не будет сложно - просто запустите несколько программ, и когда они все закончат, сообщайте о любых кодах ошибок. Но я совсем новичок в VBScript, поэтому не уверен, что делаю что-то не так. В настоящее время мой код выглядит примерно так:
Dim oShell, oExec
Set oShell = CreateObject(WScript.Shell)
Set oExec = oShell.Exec("cmd.exe /C cd path/to/file & runScript")
While oExec.Status = 0
WScript.Sleep(250)
Loop
WScript.Echo "Done"
Дело в том, что оно висит навсегда. Это никогда не выходит из цикла. Кажется, работает нормально, если я использую oShell.Выполнить, но мне нужно гарантировать, что каждый выполняемый мной сценарий (в конце концов, будет пять, но я начинаю с того, чтобы заставить его работать с 1) завершен, прежде чем сообщать. Но я не хочу, чтобы они бегали один за другим. Выполнение их параллельно прекрасно и будет намного быстрее.
Как ни странно, кажется, что если я использую цикл while для распечатки выходных данных скрипта, он работает просто отлично:
...
Do
str = oExec.StdOut.ReadLine()
WScript.Echo str
Loop While Not oExec.StdOut.atEndOfStream
...
Поэтому я не уверен, в чем проблема с командой Exec или что я делаю неправильно.
Если у кого-нибудь есть предложение, я бы хотел его услышать.