2016-08-16 81 views
2

我有一个调用多个其他脚本的VBScript。 (他们大多是刚刚从NAS文件复制到多个地方的用户的PC上。.ShellExecute并等待

需要

其中一个VB脚本来运行为使用.ShellExecute管理员。

它的工作,但也有其他的VB脚本它调用之后依靠它,所以我得到的文件错误丢失。

我知道命令

shell.Run "sample.vbs", , True 

等待,直到脚本完成。

有没有类似的方法来获得ShellExecute要等待?

回答

2

ShellExecute总是异步运行。如果您还有其他需要在脚本完成后才能运行的脚本,则可以在完成后创建某种标记以向其他脚本发送“去”信号。

例如,你可以在一个特定的路径创建一个文件:

Set fso = CreateObject("Scripting.FileSystemObject") 
fso.CreateTextFile("C:\path\to\marker.txt", True) 

如果需要运行脚本一次以上的批次,有脚本删除标记启动时,并重新创建它在最后。

接下来应该运行的脚本需要检查这个标记并暂停执行,直到它出现。例如:

Set fso = CreateObject("Scripting.FileSystemObject") 
Do Until fso.FileExists("C:\path\to\marker.txt") 
    WScript.Sleep 100 
Loop 

其他选项正在创建注册表值或事件日志条目。

检查进程列表(例如通过Win32_Process)将不起作用,因为普通用户无权访问高级进程的属性(这将需要识别此特定进程)。

+0

工作完美,非常感谢! :D:D –