当前位置:  开发笔记 > 编程语言 > 正文

WScript.Shell和阻塞执行?

如何解决《WScript.Shell和阻塞执行?》经验,为你挑选了2个好方法。

我使用WScript自动执行某些任务,使用WScript.Shell调用外部程序.

但是,现在它不会等待外部程序完成,而是继续前进.这会导致问题,因为我有一些任务依赖于其他完成的任务.

我使用的代码如下:

ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir

Set wshShell = WScript.CreateObject("Wscript.Shell")
wshShell.run ZipCommand

有没有办法这样做,所以它阻塞,直到shell执行程序返回?



1> FlySwat..:

事实证明,虽然循环是严重的CPU占用:P

我找到了一个更好的方法:

ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir

Set wshShell = WScript.CreateObject("Wscript.Shell")

wshShell.Run ZipCommand,1,1

最后两个参数是Show window和Block Execution :)



2> Guy Starbuck..:

如果使用"Exec"方法,它将返回一个引用,因此您可以轮询"Status"属性以确定它何时完成.以下是msdn的示例:

Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")

Set oExec = WshShell.Exec(ZipCommand)

Do While oExec.Status = 0
    WScript.Sleep 100
Loop


使用Exec()而不是Run()的一个优点是您也可以访问StdOut和StdErr.但是,如果你不关心它,Run()会更简单.
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有