我有一个调用多个其他脚本的 VBScript。(大多数只是将文件从 NAS 复制到用户 PC 上的多个位置。
其中一个 VBScript 需要使用 . 以管理员身份运行.ShellExecute。
它确实有效,但调用后还有其他 VBScript 依赖它,因此我收到文件丢失的错误。
我知道命令
shell.Run "sample.vbs", , True
Run Code Online (Sandbox Code Playgroud)
等待脚本完成。
有类似的方法可以ShellExecute等待吗?
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提升进程的属性(需要识别此特定进程)。
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |