2012-04-19 4 views
1

Colls, привет. Мой Javascript запустить внешний .bat файл:Как спросить javascript, чтобы подождать окончания выполнения внешнего приложения?

var objShell = new ActiveXObject("Shell.Application"); 
     objShell.ShellExecute("start.bat", "Main.bat c:\pr ext.dat ", "C:\\PR\\", "open", "1"); 

START.BAT файл работает пять минут. И после этого мой скрипт продолжает выполнять другие команды. Мой вопрос «как спросить (пусть он знает) Javascript, чтобы подождать окончания выполнения файла START.BAT?»

naxt код не очень подходит в моем случае:

var date = new Date(); 
var curDate = null; 

do { curDate = new Date(); } 
while(curDate-date < millis); 
+0

Вы используете это из wsf-файла? – Teemu

+0

Да, вы правы. – May12

ответ

0

Если у вас «повторно уверены время ваш Main.bat должен выполнить, вы можете использовать это:

WScript.Sleep(50000); 

WSH ссылка язык: http://msdn.microsoft.com/en-us/library/98591fh7(v=vs.84).aspx

метод Sleep: http://msdn.microsoft.com/en-us/library/6t81adfd(v=vs.84).aspx

+0

Да, это работает !!! Но, к сожалению, я не уверен, как долго будет работать main.bat (сегодня main.bat работает 1 мин, а завтра он может работать пять минут) = (. Не могли бы вы мне что-нибудь посоветовать и спасибо за помощь еще раз. – May12

+0

@ May12 Если у вас есть ключ к максимальному времени main.bat, вы можете использовать это время в качестве задержки (+ некоторые дополнительные, чтобы быть уверенным). Я думаю, вы также можете обнаружить возвращаемое значение из main.bat. За этой ссылкой вы «найду все, что вам понадобится: http://msdn.microsoft.com/en-us/library/9bbdkx3k(v=vs.84).aspx – Teemu

+0

Teemu, поскольку я прочитал действительно, я должен использовать метод WshShell.Run: var WshShell = WScript.CreateObject ("WScript.Shell"); \t \t intReturn = WshShell.Run ("C: \\ PR \\ _ start.bat" и "Main.bat c: \ pr ext.dat", 1, TRUE), но он все еще не работает = ((последний параметр ps (TRUE) является resposible для ожидания внешнего конца приложения – May12