VBS变量名Wsh等于WScript对象?

代码如下:

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

(0)

相关推荐

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

    复制代码 代码如下: 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

  • VBS基础篇 - wscript 对象详解

    一.wscript对象 描述:提供对 Windows 脚本宿主对象模型根对象的访问. 详述:WScript 对象是 Windows 脚本宿主对象模型层次结构的根对象.它可在任何脚本文件中使用,不需要特定的声明.         WScript 对象提供对以下信息的访问命令行参数, 脚本文件的名称,宿主文件名, 宿主版本信息.         WScript 对象可用来创建对象,连接对象, 与对象断开连接, 同步事件, 以编程方式停止脚本的执行,将信息输出到默认输出设备(Windows 对话框或命

  • JavaScript中重名的函数与对象示例详析

    前言 本文主要给大家介绍了关于JavaScript中重名的函数与对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. JavaScript 允许重复声明变量,后声明的覆盖之前的. var a = 1; var a = 'x'; console.log(a); //输出'x' JavaScript允许重复定义函数. JavaScript没有重载这个概念,它仅依据函数名来区分函数. 后定义的同名函数覆盖之前的,与参数无关. function test() { consol

  • 数组与类使用PHP的可变变量名需要的注意的问题

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

  • PHP的可变变量名的使用方法分享

    通常变量通过下面这样的语句来命名 : 复制代码 代码如下: <?php $a = 'hello'; ?> 可变变量名指的是使用一个变量的值作为这个变量的名称.在上面的例子中,通过使用两个$符号,你可以把hello设置成一个变量的名称,就像下面那样. 复制代码 代码如下: <?php $$a = 'world'; ?> 通过上面的两个语句,有两个变量被定义:变量$a,装的内容是"hello" 以及变量$hello,装的内容是 "world".

  • python实现可变变量名方法详解

    如果要写一个程序,让x1为1,x2为2,然后直到x100为100,你会怎么做? 在C这种静态语言里,变量名这个标识符实际上会被编译器直接翻译成内存地址,所以除了手动设置每个变量的值以外,没办法做到这点.而Python这种动态语言则是可以做到的. 最容易想到的自然是eval,但是实际上根本不需要这种危险的东西,因为Python的变量名就是一个字典的key而已.要获取这个字典,直接用locals和globals函数即可. 因此这个程序可以这样实现: 代码如下: >>> names = loc

  • 基于Python函数和变量名解析

    1.Python函数 函数是Python为了代码最大程度的重用和最小化代码冗余而提供的基本程序结构,用于将相关功能打包并参数化 Python中可以创建4种函数: 1).全局函数:定义在模块中,每个模块都是一个全局作用域,因此,全局作用域的范围仅限于单个程序文 2).局部函数:嵌套在其它函数中 3).lambda函数:表达式 4).方法:与特定数据类型关联的函数表,并且只能与数据类型关联一起使用 Python提供众多内置函数 Python创建.改变.查找变量名都是在名称空间中进行,在代码中变量名被

  • java解析{{}}变量名以及文本内容替换操作

    发短信.发邮件的时候经常会遇到模板内容需要替换成实际数据的问题,本文介绍从文本模板中解析出变量列表,以及参数填入后得到实际文本内容的办法: /** * 根据正则表达式获取文本中的变量名列表 * @param pattern * @param content * @return */ public static List<String> getParams(String pattern, String content) { Pattern p = Pattern.compile(pattern)

  • Mybatis #foreach中相同的变量名导致值覆盖的问题解决

    目录 背景 问题原因(简略版) Mybatis流程源码解析(长文警告,按需自取) 一.获取SqlSessionFactory 二.获取SqlSession 三.执行SQL 背景 使用Mybatis中执行如下查询: 单元测试 @Test public void test1() { String resource = "mybatis-config.xml"; InputStream inputStream = null; try { inputStream = Resources.get

  • Access保留字&变量名列表

    Access保留字&变量名列表,建表时应避免使用这些词汇和符号. Access 2002/2003 - 复制代码 代码如下: A      ADD      ALL      Alphanumeric      ALTER      AND      ANY      Application      AS      ASC      Assistant      AUTOINCREMENT      Avg  -B      BETWEEN      BINARY      BIT      

随机推荐