Войти

Показать полную графическую версию : [решено] Скрипт который поочередно запускает на исполнение скриптов


Dt83
24-11-2011, 11:25
Добрый день!

Столкнулась с проблемой. Есть три скрипта. Пишу скрипт, кот. бы поочередно их запускал на исполнение. Но в итоге столкнулась с тем, что запускается последний скрипт на исполнение, а второй еще не отработался. Пыталась поставить между ними паузу, не очень удобно. Т.к. скрипты по работе с файлами, а их кол-во меняется. Подскажите пожалуйста что я могу упускать.

пример скрипта:

Set WshShell = CreateObject("WScript.Shell")

WshShell.Run ("""D:\test\1.vbs""")
WScript.Sleep 800

WshShell.Run ("""D:\test\2.vbs""")
WScript.Sleep 800

WshShell.Run ("""D:\test\3.vbs""")
Wscript.Echo "Выполнено"

Tonny_Bennet
24-11-2011, 11:56
По идее мы не должны стартовать второй скрипт пока работает первый. Но тут (http://forum.vingrad.ru/forum/topic-320241.html) говорят что на VBS это или нереально или нужно прибегать к костылям типа файла с метками о работе.

Стоит копать в сторону: как узнать работает ли сейчас скрипт!

Dt83
24-11-2011, 12:12
Я вообще думала что метод WshShell.Run как раз таки подразумевает полную отработку, или я ошибаюсь? т.е. сначала он исполняет скрипт 1 до полной отработки, затем переходит ко второму и т.д. Разве не так должно быть?

Iska
24-11-2011, 19:07
Dt83, используйте третий параметр «bWaitOnReturn» метода .Run() (http://msdn.microsoft.com/en-us/site/d5fk67ky) объекта WshShell (http://msdn.microsoft.com/en-us/site/aew9yb99) — «True», без последующих «WScript.Sleep»:
WshShell.Run ("""D:\test\1.vbs""", 1, True)

Delirium
25-11-2011, 01:00
Либо создать 3 bat файла и запускать их в четвертом bat файле примерно так: start /wait 1.bat, потом "start /wait 2.cmd", потом третий. В таком случае продолжение пойдет только после закрытия первого файла.

Dt83
07-12-2011, 15:38
Спасибо!

Вроде получилось:)

Взяла способо у Iska, а именно использовала параметр bWaitOnReturn.




© OSzone.net 2001-2012