- 您没有使用“选项显式”;太鲁莽了。
- 您不会在 Dims 附近/立即启动;这很容易出错。
- 您只使用一次变量(objShell);太浪费了。
- 您在比较中混合了数据类型(整数与字符串);这太愚蠢了。
- 您没有阅读文档(仔细);这是无礼的。
来自Docs:
bWaitOnReturn
可选。指示脚本是否应等待的布尔值
在继续下一个之前完成执行的程序
脚本中的声明。如果设置为 true,脚本执行将暂停,直到
程序完成,并且 Run 返回由
程序。如果设置为 false(默认值),则 Run 方法返回
启动程序后立即自动返回 0(不是
被解释为错误代码)。
为避免因缺少 dcdiag 或不同版本的 findstr 或对这些程序的误解/使用而导致不必要的问题,我使用“最小错误级别设置器”:
type ex0.vbs, ex1.vbs
ex0.vbs
WScript.Quit 0
ex1.vbs
WScript.Quit 1
还有这段代码:
Option Explicit
Dim consult : consult = WScript.CreateObject("WScript.Shell").Run("%comspec% /c ex0.vbs | ex1.vbs", 0, True)
If consult = "0" THEN
WScript.Echo consult, "OK"
else
WScript.Echo consult, "ERROR"
end If
输出:
cscript 36531325.vbs
1 ERROR
使用
.Run("ex0.vbs | ex1.vbs", 0, True)
查看您需要一个 shell (%comspec%) 来使用 shell 的功能 (|) 和
.Run("%comspec% /c ex0.vbs | ex1.vbs", 0)
为了理解 bWaitOnReturn 参数的重要性。