.Shell执行并等待

Hus*_*rif 6 vbscript

我有一个调用多个其他脚本的 VBScript。(大多数只是将文件从 NAS 复制到用户 PC 上的多个位置。

其中一个 VBScript 需要使用 . 以管理员身份运行.ShellExecute。

它确实有效,但调用后还有其他 VBScript 依赖它,因此我收到文件丢失的错误。

我知道命令

shell.Run "sample.vbs", , True
Run Code Online (Sandbox Code Playgroud)

等待脚本完成。

有类似的方法可以ShellExecute等待吗?

Ans*_*ers 5

ShellExecute始终异步运行。如果您有其他脚本需要在此脚本完成后运行,您可以在完成后创建某种标记,以向其他脚本发出“转到”信号。

例如,您可以在特定路径中创建文件:

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

如果您需要多次运行一批脚本,请让脚本在启动时删除标记并在结束时重新创建它。

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

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

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

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