我有一个调用多个其他脚本的VBScript。(其中大多数只是将文件从NAS复制到用户PC上的多个位置。
需要使用.ShellExecute以管理员身份运行其中一个VBScripts。
它确实可以工作,但在调用后还有其他VBScripts依赖它,所以我得到了一个文件丢失的错误。
我知道命令
shell.Run "sample.vbs", , True等待脚本完成。
有没有类似的方法让ShellExecute等待?
发布于 2016-08-16 16:26:40
ShellExecute总是异步运行。如果您有其他脚本只需要在此脚本完成后运行,您可以在完成时创建某种类型的标记,以向其他脚本发出"go“的信号。
例如,您可以在特定路径下创建一个文件:
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)将不起作用,因为普通用户无法访问提升的进程的CommandLine属性(识别此特定进程将需要该属性)。
https://stackoverflow.com/questions/38969503
复制相似问题