Если вы используете Interaction class 'Shell function, третий параметр в нем является логическим Wait. Установите его в значение True - и каждый оператор Shell будет ждать завершения команды перед вызовом следующего.
Насколько я помню, Shell не ждет ребенка подпроцессов, так что если вы начинаете процесс, который начинается еще один, а затем завершает работу (например, bat
файла без call
или с start
) - вы можете столкнуться с некоторыми проблемами , В этом случае рассмотрите возможность изменения полного дерева вызовов. Другим вариантом было бы использовать сборку System.Management для отслеживания дерева cals с использованием WMI, как описано here.