2012-04-19 53 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