VBS变量名Wsh等于WScript对象?_vbs

复制代码 代码如下:

set wsh = createobject("wscript.shell")
wscript.sleep 15 * 60 * 1000
wsh.run "shutdown /s /t 0"

双击运行,居然弹出个错误对话框

复制代码 代码如下:

Line: 1
Char: 1
Error: Wrong number of arguments or invalid property assignment: ‘wsh'
Code: 800A01C2
Source: Microsoft VBScript runtime error

习惯了用VbsEdit写脚本,难道没有VbsEdit我就写不对VBS脚本了?一个字一个字地检查了一遍,没发现任何语法错误,但是双击就是报错,真是见鬼了!
传说声明变量是个良好的编程习惯,于是改成

复制代码 代码如下:

dim wsh
set wsh = createobject("wscript.shell")
wscript.sleep 15 * 60 * 1000
wsh.run "shutdown /s /t 0"

这次居然不报错了!怎么可能!VBS不是可以不声明变量的么!平时写的程序不都好好的么!
想了一下,发现平时用VbsEdit的时候变量名都是用编辑器自带snippets中的WshShell,莫非是变量名的问题?

复制代码 代码如下:

'Dim WshShell
Set WshShell = CreateObject("wscript.Shell")
WScript.Sleep 15 * 60 * 1000
WshShell.Run "shutdown /s /t 0"

这样也没有任何问题,看来是wsh这个变量名惹的祸。为什么不能用这个变量名呢?唯一的解释就是它是VBS内置的变量,而WScript也是VBS的内置变量,难道Wsh是WScript的别名?
Wsh.Echo "Hello world"
MsgBox Wsh.ScriptFullName测试结果和WScript一样,怎么会有这么变态的东西!我没有在哪本书上看到过,参考手册上也没有任何说明。
总结一下:
1、Wsh是WScript的别名
2、Dim可以消除VBS内置变量
3、不要以为自己的VBS水平很高
原文:http://demon.tw/programming/vbs-wsh-wscript.html

时间: 2024-07-31 04:26:15

VBS变量名Wsh等于WScript对象?_vbs的相关文章

vbs后台运行bat删除自身的代码_vbs

知道真实路径的情况下 复制代码 代码如下: set fso=wscript.createobject("scripting.filesystemobject") fso.deletefile "c:\windows\system32\run.cmd" fso.deletefile "c:\windows\system32\run.vbs" 不知道具体的路径情况下,可以用如下代码: 复制代码 代码如下: Set fso =CreateObject(

VBS脚本病毒原理分析与防范_vbs

网络的流行,让我们的世界变得更加美好,但它也有让人不愉快的时候.当您收到一封主题为"I Love You"的邮件,用兴奋得几乎快发抖的鼠标去点击附件的时候:当您浏览一个信任的网站之后,发现打开每个文件夹的速度非常慢的时候,您是否察觉病毒已经闯进了您的世界呢?2000年5月4日欧美爆发的"爱虫"网络蠕虫病毒.由于通过电子邮件系统传播,爱虫病毒在短短几天内狂袭全球数百万计的电脑.微软.Intel等在内的众多大型企业网络系统瘫痪,全球经济损失达几十亿美元.而去年爆发的新欢

VBS中Run和Exec的区别_vbs

Set ws = CreateObject("WScript.Shell") '这里创建一个对象引用,以便在以下示例代码中使用. 'Demon注:这个变量名怎么这么猥琐(WS) 语法:(常识(Demon注:常识这个词我喜欢):作为过程使用时,不要加括号,否则出现编译器错误(参数唯一或没有时加括号不会出错,但建议不要加)) 复制代码 代码如下: ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn]) [Set objExec =] ws

Xcode中修改变量名、类名及字符串的替换操作

Xcode中修改变量名.类名及字符串的替换操作         在做iOS开发代码优化的工作时,优化代码结构之前,我们应该先整理好工程的外貌,将文件和类的命名进行规范,在Xcode中为我们提供了方便而强大的名称修改功能. 第一步:修改类名         将鼠标点击放在类的名称上,选择Xcode工具栏中的edit->refactor->rename: 之后,将类名更改为我们需要的模式点击preview,记得将下面的关联文件勾选: Xcode会为我们检测出需要更改的地方,浏览无误后点击save.

VBS中的标识符(Identifiers)_vbs

VBS其实存在两种标识符: 普通标识符(NORMALIDENTIFIER) 中括号标识符(BRACKETIDENTIFIER) 但是我看过的VBS书籍上都只讲了普通标识符,没有讲中括号标识符. 普通标识符的规则我们已经很熟悉了: 第一个字符必须是字母. 后面的字符可以是字母.数字和下划线(_) 长度不能超过 255 个字符 不能是VBS保留的关键字 中括号标识符的规则更简单: 中括号括起来的任意Unicode字符(换行.回车和NULL除外) 长度不能超过 255 个字符(不包括中括号) 有了中括

VBS教程:VBScript 语句-ReDim 语句_vbs

ReDim 语句 在过程级中声明动态数组变量并分配或重新分配存储空间. ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . . 参数 Preserve 当更改现有数组最后一维的大小时保留数据. varname 变量名,遵循标准变量命名约定. subscripts 数组变量的维数,最多可以声明 60 维数组.subscripts 参数语法格式如下: upper [,upper] . . . 数组的下界总是零. 说明 Re

VBS基础编程教程 (第3篇)_vbs

第三篇(共六篇):  首先, 我来解决一下上次课程的几个疑问  第一, 那个余数问题, 16 / 5 = 3...1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.  第二, 请看一下程序清单:  1)  Dim a,b,c  a=inputbox("a是:","输入半径")  b=Inputbox("b是:","输入半径")  c=a*2+b*2  Msgbox(c)  这个 输入1.2时是6  2)  Dim a

VBS基础编程教程 (第1篇)_vbs

, 如果你想接触以下VBScript也可以, 但既然有编程基础推荐直接去找一些参考书来读, 会比较快.  什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言.  我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basi

PHP的可变变量名介绍

有时候可变的变量名会给编程带来很大的方便.也就是说变量名可以被动态的命名和使用.通常变量通过下面这样的语句来命名 : <?php $a = "hello"; ?>  可变变量名指的是使用一个变量的值作为这个变量的名称.在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样. <?php $$a = "world"; ?>  通过上面的两个语句,有两个变量被定义:变量$a,装的内容是"hello&qu