VBS变量名Wsh等于WScript对象?

所属分类: 脚本专栏 / vbs 阅读数: 2156
收藏 0 赞 0 分享
复制代码 代码如下:

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
更多精彩内容其他人还在看

VBS监视网络连接与断开的代码

监视网络连接与断开,特殊情况下可能有点用,两个VBS脚本均来自微软官网
收藏 0 赞 0 分享

可以修改脚本自身运行次数的vbs(Self modifying script)

通过脚本修改脚本的内容,这里以统计脚本运行次数为例,想学习vbs的朋友可以参考下
收藏 0 赞 0 分享

VBScript之通过对比注册表查找隐藏的服务

系统服务有可能被 rootkit 隐藏,但有些时候我们仍可以从注册表中找到相关的信息。建议以管理员权限运行,否则有些服务列举不出来或出现错误的提示
收藏 0 赞 0 分享

VBScript 监控并结束指定进程的代码

有时候我们需要监控一些进程,防止一些进程的开启,发现指定进程运行就关闭它,那么就可以参考下面的代码
收藏 0 赞 0 分享

VBScript 输出中的对齐实现方法

有时候我们需要在vbs中输入的字符实现对齐效果,那么就可以参考下面的代码了
收藏 0 赞 0 分享

vbs 获取当前目录的实现代码

获取当前正执行的VBS的路径,通过Scripting.FileSystemObject组件实现
收藏 0 赞 0 分享

vbs 获取当前目录文件数量的代码(不包括子文件夹中的)

有时候我们需要获取当前目录下有多少个文件,那么就可以参考下面的代码
收藏 0 赞 0 分享

VBS获取当前目录下所有文件夹名字的代码

有时候我们需要获取当前目录下所有文件夹的名字,那么就可以参考下面的代码了
收藏 0 赞 0 分享

VBS读取注册表的两种方法

有时候我们需要用vbs来操作注册表,一般情况下有两种方法,一种是通过wshshell对象的regread,另外一种是使用WMI操作注册表,下面简单的介绍下
收藏 0 赞 0 分享

查看系统C盘剩余空间的VBS脚本

查看系统C盘剩下的空间方法有很多,在本文要为大家介绍的是通过VBS脚本是如何实现的,感兴趣的朋友不要错过
收藏 0 赞 0 分享
查看更多