2012-04-19 47 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 2012-04-19 06:51:01

+0

是的,你是对的。 – May12 2012-04-19 08:00:14

回答

0

如果您“重新确定您Main.bat需要执行的时候,你可以用这个:

WScript.Sleep(50000); 

WSH语言参考:http://msdn.microsoft.com/en-us/library/98591fh7(v=vs.84).aspx

睡眠法:http://msdn.microsoft.com/en-us/library/6t81adfd(v=vs.84).aspx

+0

是的,它的工作原理!但不幸的是,我不确定main.bat会工作多久(今天main.bat工作1分钟,明天它可能工作5分钟)=(。你能否推荐我任何东西,并且再次感谢你的帮助 – May12 2012-04-19 08:19:17

+0

@ May12如果你掌握了main.bat所需的最长时间,你可以使用这个时间作为一个延迟(+额外的肯定)。我想你也可以从main.bat中检测返回值。会找到你需要的一切:http://msdn.microsoft.com/en-us/library/9bbdkx3k(v=vs.84).aspx – Teemu 2012-04-19 08:26:06

+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)可以等待外部应用程序结束 – May12 2012-04-19 13:47:25