【问题标题】:Is wsh a reserved word in VBScript?wsh 是 VBScript 中的保留字吗?
【发布时间】:2017-01-05 15:31:17
【问题描述】:

在 Windows 7 上,我的 VBScript 中出现以下行的错误:

Set wsh = WScript.CreateObject("WScript.Shell")

错误:

Microsoft VBScript 运行时错误:参数数量错误或无效 属性赋值:'wsh'

使用wsh 以外的任何名称都可以。

我在网上搜索信息,但保留关键字的页面没有提到任何提及wsh

我在 CMD 处理器中使用 cscript 命令运行上述脚本。

问题回答后更新:

将变量声明为Dim wsh 会覆盖其关键字状态,从而允许在脚本中使用它。发布问题后发现此信息,此处:http://forums.devshed.com/visual-basic-programming-52/bizzare-finding-username-918597.html

【问题讨论】:

  • 是的。 wshWScript 对象的内置别名。
  • @AnsgarWiechers 我在任何地方都找不到记录。这是一个很好的问题。我这么多年来从未遇到过wsh
  • @rory.ap 我不认为它在任何地方都有记录(至少我没有看到任何提及它的文档)。我想我是几年前在 visualbasicscript.com 论坛上了解到的。
  • @AnsgarWiechers -- 好吧,现在在某种程度上记录了它。虽然它可以使用官方答案。
  • @rory.ap 您的请求就是我的命令。 ;)

标签: vbscript wsh


【解决方案1】:

wshWScript 对象的内置别名,允许您编写

wsh.Echo "foo"
wsh.StdErr.WriteLine "bar"
wsh.Quit 42

而不是

WScript.Echo "foo"
WScript.StdErr.WriteLine "bar"
WScript.Quit 42

但据我所知,文档并未涵盖这一点。


编辑:显然您可以通过在使用之前将wsh 定义为变量来解决此问题:

Dim wsh
Set wsh = CreateObject("WScript.Shell")

但是,请注意,这样做会完全掩盖原始标识符,即如果不离开定义变量的上下文(如果是全局变量,则意味着重新启动解释器),您将无法恢复原始行为),因为你can't un-dim a variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2016-08-19
    • 1970-01-01
    • 2020-05-14
    • 2012-07-30
    相关资源
    最近更新 更多