真正的答案(对于“我如何判断我的VBScript何时超时?”的问题)是您不能. 与几乎所有脚本一样,如果 VBScript 停止运行(因为它已超时),正在运行的线程将停止运行,因此它无法报告其状态。
但是有一个解决方案。但是,它需要一些狡猾。
如果您改为运行批处理脚本,无论您在何处使用该脚本来启动新的批处理脚本(例如,batch_1.bat包括这一行:CALL batch_2.bat),第二个脚本将运行,但第一个脚本将等待。
第一个脚本的处理一直在等待(在 CALL 处),直到脚本 2 停止运行:此时,控制权返回到脚本 1,该脚本继续执行 CALL 之后的任何代码,该代码可能用于报告脚本的事实2已结束——
CALL batch_2.bat
ECHO The batch_2.bat script has stopped running && cmd /k
有一些方法可以启动 batch_2.bat而不会导致 batch_1.bat 暂停,直到第二个脚本完成,但它们在这里无关紧要。
理论上,批处理脚本不支持并行处理。VBScript 当然也不是。但是上述技术展示了一种方法,通过这种方法,可以通过一种方式在批处理脚本中实现并行处理——这使得它在 vbScript 上成为一体!
.
如果脚本挂起,确定 vbScript 将超时的一种方法是使用WScript函数在您的 .vbs 文件中,并将Windows 脚本主机设置设置为(例如)30 秒后超时 -
一个。打开“Windows 脚本宿主设置”对话框:
- 转到:开始 > 运行
- 在“打开”框中,键入:WSCRIPT
- 单击“确定”。
乙。设置超时,在 WSH 运行时发生:
选择选项:“在指定秒数后停止脚本”。
在“秒”框中,键入要应用于所有脚本的时间限制(默认为 10 秒)。
.
这是一个查找并显示当前WSH/WScript 超时设置的函数(如果它显示此设置尚未设置,请设置它) -
WScript.Echo("WSH timeout: " + WScript.Timeout);
.
该选项//T:xx
不能使用,因为它是一个CScript函数,在 WScript 中不起作用,因此不能在 .vbs vbScript 文件中使用。
.