文档库 最新最全的文档下载
当前位置:文档库 › VBS脚本参考

VBS脚本参考

VBS脚本参考
VBS脚本参考

VBS脚本参考之一——使用连字符2007年06月14日星期四下午08:35前言

这一章的前半部分介绍了VB 脚本最基本的概念,并且告诉你它可以完成的工作,尤其是VBS和其它的如WMI、ADSI 接合在一起的时候。后半部分主要介绍了VBS对系统管理员更有用的部分。

许多脚本和程序语言在向文本输入的时候并不严格的遵守文本的行。例如,尽管下面这个JS 脚本写了很多行,但是,JS 把它当做一行来处理。这是因为,在大部分的时候,JS 只有看到中止符的时候才认为使一个行的中止。在这个例子中,中止符就是“;”。在实际中敲入的行是和脚本本身不相关的。

var 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

objWMI

=new

Enumerator

(GetObject("winmgmts:")

.

InstancesOf("Win32_process"))

;

正好相反,同样的一段代码,用VB 写的时候就会报一个语法错误。

Set

objWMI

=

(GetObject("winmgmts:")

.

InstancesOf("Win32_process"))

这是因为,VBS用回车键来代替特定的中止符。为了中止一个VB脚本,你不需要来敲入一个分号或者其它的特殊的符号,你只需要敲回车键就好了。一般来讲,不用中止符的限制,使VBS 在编写的过程中变的简单,但是也有一点会有些复杂。为了增强程序的可读性,建

议每行的最大长度不超过80个字符。那么当你的一行代码中有100 个字符,怎么办呢?尽管看来好象有个很简单的解决办法,但是你不能用回车键来将一行代码分隔成很多行。例如如下的代码片断会返回一个VB 运行错误因为它用回车键来分隔脚本

strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName,

strCurrentStatus

Wscript.Echo strMessageToDisplay

你不能用回车建来换行,因为在VB 中它认为回车是代表一段代码的中止,在上面的代码中,它认为第一行是脚本的第一部分陈述内容。然后认为第二行是另外一部分陈述内容。这样因为strCurrentStatus 不是一个VBS的命令,所以就报错了。为了解决这个问题,VB 脚本用下划线来表示下面一行是上面一行的代替。在VB 的早期修订版本中,在第一行末尾加一个空格和一个下划线来表示第二行是第一行的继续。为更明确的表明这个意思,第二行前面要加四个空格。(这样作是为了可读,你其实不必在继续的行前作特定的标识──就是不用在第二行前加四个空格。)作者:临汾市外事旅游局薛靖澜,转载请注明出处]

strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName, _

strCurrentStatus

Wscript.Echo strMessageToDisplay

当继续的行又引号的时候,它就显的特别复杂。例如,架设你用下划线和空格来分隔一个WMI脚本:

Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM _

Win32_Service WHERE State = 'Stopped' AND StartMode = 'Auto' ")

如果你运行这个脚本,它会弹出一个错误,因为继续换行符放在了引号中间了,这样它就认为换行符是字符串的一部分。为了分隔这个陈述:

1:在第一行用引号中止,然后插入空格和下划线

2:用and(&)符号来开始下一行,这表示第二行是第一行字符串的继续

3:在下一行开始之前加入引号这些引号表示这些陈述是包涵在上面的一行中的,没有了引号,它就VB就解释Win32_Service 是VB 的陈述语句,因为这个语句不是合法的,所以就产生了错误。修正的版本如下:

Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM " _

& "Win32_Service WHERE State = 'Stopped' AND StartMode = 'Auto' ")

用这个办法来换行的时候,在适当的位置插入空格要十分小心。在上面的例子当中,空格是添加在“from”之后和下一行的引号之前,如果空格向作偏出,那么字符串会被错位的解释(你看如果将FROM 和Win32_Service 连在一起)会像如下的错误:

" SELECT * FROMWin32_Service WHERE State = 'Stopped' AND StartMode = 'Auto'

◎VBS脚本参考之二——定义和使用变量2007年06月26日星期二下午02:57一:Working with Variables

变量是存储在计算器内存中能够存储数据的名称空间。大多数脚本语言允许你隐式的声明变量,使你不用明确的声明就可以使用变量。例如,你运行下面的脚本时候,不会遇到任何类型的错误,尽管它的第一行将一个值赋给了变量sngDegreesCelsius。尽管它并没有被声明。

sngDegreesCelsius = 11

sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)

Wscript.Echo sngDegreesFahrenheit

Function ConvertToFahrenheit(ByVal sngDegreesCelsius)

ConvertToFahrenheit = (sngDegreesCelsius * (9/5)) + 32

End Function 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

隐式的变量声明可以让写脚本变的快而且简单,但是在同时,它可能导致难以发现和解决的问题。

为了说明这一点,以前面的脚本为例,前面的脚本将摄氏的11 度转换成华氏的51.8 度。下面一个脚本本来应该作同样的事情,但是它却返回了一个32 的值……

sngDegreesCelsius = 11

sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)

Wscript.Echo sngDegreesFahrenheit

Function ConvertToFahrenheit(ByVal sngDegreesCelsius)

ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32

End Function

上面一个脚本返回一个错误的值。因为在第六行敲入sngDegreesCelsius,而在后面却敲入了sngDegresCelsius,因为这个变量并没有赋值,所以VB 认为它的值是0,这样继续算下去,结果为0,0 再加上32 所以返回了错误的答案。像这样的错误很难被发现,因为语法是正确的,所以并没有错误的信息报出来。你期待得到一个不是11 的值,并且你得到了。当你写更加复杂的脚本的时候,这个敲入的错误很难被发现和改正。

Declaring Variables in VBScript

为了避免这样的问题发生,你可以显式的声明你的变量。当显示变量声明被要求的时候,脚本中所有的变量都必须被显示的声明,否则会再运行的时候报错。

例如,如下的脚本用“Option Explicit ”要求所有的变量被显示的声明,并且所有的变量用一

个dim 语句。

Option Explicit

Dim sngDegreesCelsius

Dim sngDegreesFahrenehit

sngDegreesCelsius = 11

sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)

Wscript.Echo sngDegreesFahrenheit

Function ConvertToFahrenheit(ByVal sngDegreesCelsius)

ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32

End Function

当你运行这样一个脚本的时候,脚本的主机遇到一个没有声明的变量,这样,脚本中止执行并且显示出类似下面的一个错误:

C:\Scripts\TempConvert.vbs(10, 5) Microsoft VBScript runtime error: Variable is

undefined:

'sngDegresCelsius'

在VB 中声明变量:

1.用Option Explicit 语句来强制一个变量的声明。

2.用一个单独的DIM 语句来声明每一个你要用的变量。虽然你只能用一个单独的dim 来声明一个变量,但是在变量的后面,你可以添加一些解释来说明变量的用途,如下所示:

Option Explicit 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Dim intFirstNumber ' First number in our simple equation

Dim intSecondNumber ' Second number in our simple equation

Dim intTotal ' Sum of intFirstNumber and intSecondNumber

Initializing Variables

初始化一个变量就是简单的给一个变量赋予一个初始值。例如,如下的几行代码初始化了两个变

量,将x 赋予100,将Y 赋予abcde

X = 100

Y = "abcde"

如果你建立一个变量,但是没有给它初始化,(就是没有赋值给它),那么它的值有一下两种可能:

如果它是一个字符串,那么它的值为空

如果它的值是一个数字,那么它的值是0.

例如:如下脚本创建了两个变量,X,Y,但是没有赋值给他们:

Dim X

Dim Y

Wscript.Echo X & Y

Wscript.Echo X + Y

在脚本的第三行,这两个变量被认为是字符串,(因为&是用来连接两个字符串的)。当它运行的时候,它显示入 2.8 所示的信息框。因为两个变量都是空,蔓儿他们的接合也是空。所以结果就是什么都没有。

在脚本的第四行,这两个变量被认为是数字。数字没有被初始化的时候,他们自动的被赋值为0。这样,这个行的脚本代表0+0 的和。

Using the Equals Sign in VBScript

在VB 脚本中,等号的含义和算数中是不同的。在算数中,x=2+2 是被认为是,x 等于2 加2 但是在VB 中,同样的表达式,被读作:x 被赋值为2+2 在上面这个例子中,他们并没有什么不同,任何一种办法来说,x 的值都是4。但是看下面一个脚本,它用一个1 到10 的循环:

For i = 1 to 10

X = X + 1

Next

这个脚本的第二行在算数里面是不可能的,x 怎么可以等于x+1 哪?原因就是它并不是一个算数表达式,而是一个合法的VB 表达式,这里的X 是一个变量被赋予新的值,在这里这个表示式被读作:

X 被赋值为x 当前的值加上1

就是说,如果x 当前的值为3,当运行这个表达式之后,它的值就为 4 了,就是 3 加上1 事实上,在VB 中,等号也可以用在对字符串的赋值当中。例如,如下脚本建立一个message 变量,赋予了它很多字符串的值:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Message = "This "

Message = Message & "is a "

Message = Message & "test message."

Wscript.Echo Message

◎VBS脚本参考之三——定义和使用常量2007年06月30日星期六下午05:09

使用常量

常量的意思是在脚本运行的时候,它的值不能改变。例如,如果你有一个脚本将日元转换成美元,假设当前的汇率是1:0.0088759,你可以在脚本中写上如下的代码:

curConvertedPrice = curPriceInYen * 0.00888759

尽管这个方法可行,但是它会出现一些问题,原因很多不赘述了,为了防止这样的问题发生,用常量的办法来替代用数直接敲入。如果你改变了这个常量,那么你只是需要在定义常量的一个地方更改它就好了。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

定义常量

在VB 脚本中,常量的定义是用一个const 的表达式后加上常量的名字然后和常量的赋值。当你定义常量的是时候,你必须赋值给它一个数值。你不能给一个常量赋值一个变量,或者是一个程序。例如如下代码,尝试用一个变量NumberOfDepartments,定义一个常量,会产生一个Expected literal constant 的错误

NumberOfDepartments = 20

Const NUMBER_OF_DEPARTMENTS = NumberOfDepartments

而你可以将20 赋给这个常量。

Const NUMBER_OF_DEPARTMENTS = 20

使用固有常量

在VB的脚本中有一些固有的常量,用来生成message box,改变输入格式,或者实现其它一些其它的功能。为了提高程序的可读性,你可能需要用这些常量,而不是它们对应等价的数字。

例如,下面的脚本例子用数字来实现message box 的显示,然后决定在message box 中,哪个按钮被按下了。尽管它可以正常的工作,但是对于不熟悉VB 脚本的人来说,这个脚本很难懂并且很不好编辑。他们必须知道260的意思是:创见一个带有yes& no 的message box,并且第二个按钮是默认的按钮,数字7 代表用户敲打NO 那个按钮。

ConfirmDelete = MsgBox ("Are you sure you want to delete these files?",260, "Delete all files")

If ConfirmDelete = 7 then

Wscript.Quit

End If 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

下面这个修正的脚本用了VBS的固有常量。(VBYesNo,VBDefaultButton2,和VBNo)用来代替数字。这些使脚本看起来简单易懂。

ConfirmDelete = MsgBox ("Are you sure you want to delete these files?", _

VbYesNo OR VBDefaultButton2, "Delete all files")

If ConfirmDelete = VbNo then

Wscript.Quit

End If

用固有常量同样可以帮助你防止当脚本Update 的时候使脚本实现中断。脚本的常量基本上不可能发生变化。几乎不可能将VbYesNo 变成VbNoYes。但是这些常量对应的值会在脚本下次更新的时候更换。用系统常量的时候也方便和其它出现的语言的脚本合并,例如,在VB 脚本中,1 用来代表true。在visual https://www.wendangku.net/doc/3b12696095.html,,true 也等于1。用true 这个固有常量,比用硬编码1 更加容易实现二者之间的转换。大部分的时候,你会发现你经常重复的使用到如下两个固有常量:

1、VbCrLf.这个等同于按下回车键。它经常用来更改输出显示的格式。例如,如下代码用来显示一行文字,一个空的行,然后再显示一行文字

Wscript.Echo "This is the first line of text." & VbCrLF & VbCrLF & _

"This is the second line of text."

2、VbTab这个常量等同于按下TAB 键,例如,如下代码来建立三个空格:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Wscript.Echo " 1" & VbTab & " 2" & VbTab & " 3"

Wscript.Echo "A" & VbTab & "B" & VbTab & "C"

Wscript.Echo "D" & VbTab & "E" & VbTab & "F"

当上面这个脚本运行的时候,它将显示如下:

1 2 3

A B C

D E F

这些固有常量只有在用VB 写的时候才有用,它没有权力去用类似WMI,ADSI或者脚本的自动控制的对象。在用VB 脚本写的时候,你可以不用定义就使用Vb 当中固有的常量,比如VbCrlf,VbYesNo,但是,当你用WMI,ADSI 当中常量的时候,你必须显式的声明这些常量。

例如,在Script Runtime Drive 对象当中有个固有常量fixed 用来表示fixed disk drive,Script Runtime可以用这个fixed 而不需要显式的声明,不用赋值给它……

因为VB 脚本没有权力访问这个常量,所以任何试图不去定义就访问这个常量的脚本都会失败或者遇到一个错误。例如,如下的脚本可以运行,但是不能标识任何一个你计算器上的fixed 硬盘。

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set colDiskDrives = objFSO.Drives

For Each objDiskDrive in colDiskDrives

If objDiskDrive.DriveType = Fixed then

Wscript.Echo objDiskDrive.DriveLetter

End if

Next

这个脚本会执行失败,因为VB 脚本并不知道Fixexd 这个系统常量的值是2,取而代之的是将这个阿常量认为是一个变量。除非你把这个常量赋值,否则它的值就是empty.在这个例子中,VB 将寻找DriveType property 的值等于0 而不是去寻找等于2,因为VB 找不到任何这样属性的drives,脚本就没有返回任何的数据……为了使这个脚本工作,你必须创建一个你自己的常量,叫作fixed,并且显式的赋值给它为2,如下面的事例:

Const Fixed = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set colDiskDrives = objFSO.Drives

For Each objDiskDrive in colDiskDrives

If objDiskDrive.DriveType = Fixed then

Wscript.Echo objDiskDrive.DriveLetter

End if

Next

◎VBS脚本参考之四——脚本的数据类型2007年07月01日星期日下午04:13VBScript 的数据类型

VBS是一个有着很少数据类型的脚本语言,其并不限制变量为一种单一的数据类型。VBS 不允许你定义一个特定数据类型的变量。实际上,VB 脚本只有一种变量类型,叫作variant,它可以存储任何类型的数据。与其相反,其它程序语言比如C++是一个对数据类型要求很严格的,因为你必须事先定义变量能存储的数据类型。如果你试图存储任何数据在一个变量上,它将会报错。如果你已经将一个变量赋予特定的数字数据,那么你再将字母变量赋值给它的时候,它将崩溃。作者:临汾市外事旅游局薛靖澜,转载请注明

Variants 可以使脚本编写变得简单。你可以在没有定义数据类型的时候宣告并使用。但是如果你不了解数据类型的强制过程,那么variants会导致一系列的问题。

脚本语言所说的脚本无类,其实是针对脚本编写的人员来说的,对于脚本内部来讲,脚本还是要依照数据类型来工作。例如下面这个简单的表达式c= a + b 脚本语言必须给a,b 都赋值(有一定数据类型的值),也就是说,它必须建立并确定这两个数值是为integer 还是string。当这些值被定下来之后,它才可以执行相关的操作。

脚本的数据类型赋值的初始化过程是一种数据类型强制转换的过程。数据类型的强制过程是基于特定的规则的,大部分的时候,VB 脚本可以很顺利的完成这个任务。作者:临汾市外事旅游局薛靖澜,转载请注明

但是,类型转换一样会导致问题的发生,例如下面这个例子:

intFirstNumber = InputBox("Please enter the first number:")

intSecondNumber = InputBox("Please enter the second number:")

intTotal = intFirstNumber + intSecondNumberi

Wscript.Echo intTotal

如果你运行这个脚本,并且先后键入4,2,那么计算器会回显一个42 来作为4+2 的结果,而不是你期待的6。

这是因为,加法运算对于number和string来说都是合法的。VB 脚本给了4,2 两个值,但是它不知道数据类型,于是,在没有其它的关于数据类型的相关信息的情况下,VB 脚本就用类型强制的办法将这两个变量转换成了string数据。

与其相反,如果你在下面一小段代码中键入4,2 它将会返回正确2,这是因为除法运算只是针对numbers 来作的,所以VB 就用数据强制正确的将这两个变量转换成了number 数据。

intFirstNumber = InputBox("Please enter the first number:")

intSecondNumber = InputBox("Please enter the second number:")

intTotal = intFirstNumber / intSecondNumber

Wscript.Echo intTotal

为了避免类似的数据强制的时候发生问题,你需要显式的声明一个变量,这个过程叫做类型初始化。例如如下的VB 代码用VB 脚本的CInt 来在他们想加之前将输入的变量转换为整数型。

intFirstNumber = CInt(InputBox("Please enter the first number:"))

intSecondNumber = CInt(InputBox("Please enter the second number:"))作者:临汾市外事旅游局薛靖澜,转载请注明

intTotal = intFirstNumber + intSecondNumber

Wscript.Echo intTotal

此类常见的函数有:Cbool、Cbyte、Ccur、Cdate、CDbl、Cint、CLng、CSng、CStr等。

了解empty和Null之间的不同,对于你脚本的成功与否,起着关键的作用。Empty 变量是一个没有初始化的变量,录入,你用dim 语句定义一个curBonus 的变量,这个变量在没有赋给它特定的值的时候,它就是empty 的。一个empty 的变量在数据强制的时候,如果是number 变量就赋值给它0,如果是string 的时候,就赋值给它””(空)。

与其相反,Null 是一个没有合法的赋值的变量。典型的null 是从数据库操作中产生的。假如你查询一个数据库,想返回一个当前的分红给一个特定的员工,并且将这个值赋给curBonus,如果没有分红被分配(赋值),那么变量curBonus 就是Null.注意,curBonus 可以是0,但是你不能确定它就是0。你不能假定它的值是0,因为,有可能的是它实际上有5000 美元的分红,但是这个值还没有被输入到数据库中。这就是为什么VB脚本要将empty null 这二者加以区别的原因。二者的区别在数字运算的时候就更加的明显。例如,在下面的脚本片断中,curBonus 被设置成empty,然后将它加上curBaseSalary(50000),那么计算的结果是:50000 + 0 = 50000

curBonus = Empty

curBaseSalary = 50000

curTotalCompensation = curBaseSalary + curBonus

Wscript.Echo TotalCompensation

在下面的版本中,继续同样的操作,只是将curBonus 的值设定成Null,当你再次运行这个脚本的时候,你会发现你不是得到结果50000,而是Null.任何时候,Null 这个变量在参与数字运算的时候,它的结果是null这是因为你并不知道NULL 的真正的值,你不能将它的值赋予为0,因为你不知道它的值是否真的是0。因为你不知道它的值,也就不知道它计算的结果,这样结果只能是null.(你可以这样认为:null 的含义是:我不知道。)

curBonus = Null

curBaseSalary = 50000

curTotalCompensation = curBaseSalary + curBonus

Wscript.Echo TotalCompensation

Null 值在和数据库和ADSI 一起工作的时候就会出现错误。幸运的是,你可以使用IsNull 的办法来确定这个变量是否为Null.例如,下面的脚本来检察curBonus 是否为null,如果值是null 的话,那么赋值给它为0。这样可以使他们在计算中生效。当然你也可以选择来回显一个信息框:No bonus information available for this employee."

curBonus = Null作者:临汾市外事旅游局薛靖澜,转载请注明

curBaseSalary = 50000

If IsNull(curBonus) Then

CurBonus = 0

End If

curTotalCompensation = curBaseSalary + curBonus

Wscript.Echo curTotalCompensation

◎VBS脚本参考之五——时间和日期2007年07月07日星期六下午12:39VB 脚本用以下三个功能来标识当前的日期,时间或者全部。

Now –获得当前的日期和时间

Date –获得当前的日期

Time –返回当前的时间

如:DateInfo = DateInfo & Now & VbCrLf

DateInfo = DateInfo & Date & VbCrLf

DateInfo = DateInfo & Time & VbCrLf

Wscript.Echo DateInfo

Verifying That a Value Is a Date

在用dates 工作的时候,确定这个数据是时间还是其他是非常重要的。这个对于WMI 查询和对数据库进行相关操作的时候十分重要。在这些情况下,如果你使用了非法的日期类型,脚本将会报错。而IsDate 的功能就是告诉你这个数据是不是一个日期的值。当这个值不是一个日期的时候,他返回一个false(0),如果是一个日期,就返回一个true(1),日期的值可以用以下方法标识:用#号来标识时间。这是一种被推荐的办法。因为这样的办法消除了防止VB 脚本将其它非日期的数据解释成日期的可能。如:

#9/3/2002# ,说明:中文系统格式为#年/月/日#。

当然为了确保日期的格式合法,你也可以打开计算机“区域和语言”选项,然后选择自定义,来进行设置。

下面这个脚本创建一个数组,然后列举里面的数值。这个脚本用IsDate 来决定是不是为合法的日期,并且回显出来这个合法的日期和一段消息,来表示这个是合法的日期。

DateArray = Array("6/1/2002", "June 1, 2002", "6", "6/1")

For Each dtmDate in DateArray

If IsDate(dtmDate) = 0 Then

Wscript.Echo dtmDate & " is not a valid date."

Else

Wscript.Echo dtmDate & " is a valid date."

End If

Next

说明:为什么6/1 也是一个合法的日期?因为在vb 脚本中使用IsDate 函数的时候,如果脚本遇到一个似是而非的日期时如6/1 的month/day 的时候,他自动的添加当前的年份,而变成了month/day/year,在上面的这个脚本中,运行的年份是2002 年,所以这个日期就变成了6/1/2002,这个是一个合法的日期。

Retrieving Specific Portions of a Date and Time Value

大部分的时候,你所感兴趣的只是时间或者日期的一部分。例如,你可能有一个备份的脚本,只有在周日或者不是周末的时候来备份你的数据。这样,你可能每天都获得你的事件日志,在每月的15,30 号清除日志。

VB 脚本用两种特别的办法来的获得当前的日期和时间的一部分。DatePart 函数可以获得当前日期时间的任何部分。此外VB 脚本还提供了其它诸如:Day ,Month,Year 这样的函数来获得日期或者时间的一部分。DatePart 可以获得当前日期时间的特殊部分,它要求两个参数:

Yyyy-年份,返回当前的时间值的年份

q-季度,返回当前季度。

m-月份,返回当前的月份信息

1 – January

2 – February

3 – March

4 – April

5 – May

6 – June

7 – July

8 – August

9 – September 10 – October 11 – November 12 - December

y-一年中的多少天,返回当前日期的数值。从1 月1 号起算到12 月31 号为止。如2 月1 号是这个年的第32 天。

d-日。返回是这个月的多少天。例如4 月17 日,则返回17

w-周几,返回当前周的周几的信息。

1 – Sunday

2 – Monday

3 – Tuesday

4 - Wednesday

5 – Thursday

6 – Friday

7 Saturday

ww-一年中的第多少周,返回当前周的信息,1 月1 号认为是第一周,12 月31 号是第52 周。尽管如此,你仍然可以确定哪周是一年中的第一周。

H-小时。返回一天24 小时的格式中是第多少个小时。例如,下午2:00 会返回14,下午6:00 会返回18。在午夜到凌晨一点的时候,返回的值是0,午夜12 点返回的也是0。

n-分钟,返回当前时间的分钟。

s-秒数:返回是当前分钟的秒数。

为了使用DatePart 这个函数,你可以创建一个变量并且赋值给它。例如如下的代码将你计算机上当前的时间的年份赋值给变量CurrentYear

CurrentYear = DatePart("yyyy", Date)

在上面的例子中,用到了如下两个参数:

"yyyy 表示从特定的日期返回年份,这个参数必须放在引号以内。

Date 用来解析的当前的日期,你也可以把特定的日期用引号括起来(例如”6/1/2002”)或者用一个变量来赋值个一个DA TE,例如如下两行代码返回值为1997

DateToCheck = #8/15/1977#

CurrentYear = DatePart("yyyy" , DateToCheck)

注意:当将一个日期赋值给一个变量的时候,你可以用#将日期放在中间。这样保证vb 脚本认为它是日期,而不是数字或者字符串等变量。当然你也可以用CDate 函数来实现这个功能。下面脚本解析出当前的日期,然后显示出当前日期的分支(组成部分)。

Wscript.Echo Now

Wscript.Echo "Year: " & DatePart("yyyy" , Now)

Wscript.Echo "Quarter: " & DatePart("q", Now)

当你给DatePart 函数一个错误时间时,它不会报错,但是不会返回你期待的结果。例如,如下代码想返回1899:

Wscript.Echo DatePart("yyyy", "8:00 AM")

这行代码返回的是0

Wscript.Echo DatePart("h", "12/1/2002")

除了DatePart 函数以外,还其它函数同样可以更改时间的值。如:

Day、Hour、Minute、Month、Second、Weekday、Year等

例如:

CurrentDate = Now

Wscript.Echo "Year: " & VbTab & VbTab & Year(CurrentDate)

vbs经典脚本

Vbs脚本经典教材 Vbs脚本经典教材(最全的资料还是MSDN) —为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开W ORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗? Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。 我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。 最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs 脚本了,并且可以直接执行。

Vbs脚本编程VBS脚本运行库

Vbs脚本编程&VBS脚本运行库 不知道这个对大家有没有用啊. 本文档是由网上薛靖澜<靖海安澜阁>的文章中整理而成,一切版权归原作者所有. 下了打不开的朋友看一下打开方法: 一、如果提示是:如果提示是Internet Explorer 不能链接到您请求的网页或者打开后“页面无法显示”。 请在要打开的CHM文件上右键属性,会在底下属性中多了一个“解除锁定”,点击后就可以正常显示了。 或者在记事本中保存下列内容为00.reg: REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions] "MaxAllowedZone"=dword:00000003 "UrlAllowList"="" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions] "MaxAllowedZone"=dword:00000003 "UrlAllowList"="" 以上内容复制到一个文本文件,然后把文件名后缀改成.reg,然后点击即可 二、如果提示是:"不能打开文件mk:@MSITStore:\****.chm" 造成这个故障有可能是你的系统中的Hhctrl.ocx文件丢失或者被其他版本的Hhctrl.ocx覆盖掉了,可以从相同的电脑或者安装光盘中拷贝过来一个,然后重新注册Hhctrl.ocx文件:具体步骤如下:第一步:退出正在运行的所有程序,单击“开始-〉程序”;第二步:在运行对话框键入"regsvr32 c:\windows\system\hhctrl.ocx"回车,或”regsvr32 /i hhctrl.ocx“出现"DllRegisterServer成功"消息确定,重启计算机即可。 三、其它方法 1,从windows的控制面板进入“语言和区域”-“区域选项”,如果区域不是中文请改为中文2,把文件名称改为E 文的简单一点(a.chm),copy 到一个根目录下面,打开看看,如果不行,请重新下载,有的时候下载过程出了问题,看看是否OK 3,如果多数CHM都打不开,试试重新注册regsvr32 itss.dll 4,开始--运行--输入“regedit”,打开注册表,找到以下分支:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions 在其下新建DWORD键MaxAllowedZone,将其值取成3试一下 5,没有正确安装或被你删除了hh.exe文件,你可以到Windows\system32下查一下。如果是这样那你可以从别人的电脑上copy一个hh.exe ,放到上面那个目录里,再双击一个chm文件,让你选择程序就选那个C:\windows\hh.exe ,这样就恢复了chm文件和hh.exe的关联6,如果以上几种情况都好的话,删除"hh.dat", 在目录\Documents and Settings\%username%\Application Data\Microsoft\HTML Help 下,这个文件包含一些内容可能引起错误 四、开始--运行--输入“regedit”,打开注册表,找到以下分支:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions 在其下新

VBS经典代码大全

VBS代码片断大全[一] 1 VBS 取得本机IP strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set IPConfigSet = objWMIService.ExecQuery("Select IPAddress from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE") For Each IPConfig in IPConfigSet If Not IsNull(IPConfig.IPAddress) Then For Each strAddress in IPConfig.IPAddress WScript.Echo strAddress Next End If Next -------------------------------------------------------------------------------- 2 取得本机计算机名 strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem") For Each objComputer in colComputers Wscript.Echo https://www.wendangku.net/doc/3b12696095.html, Next -------------------------------------------------------------------------------- 4 检查升级包 strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem") For Each objOperatingSystem in colOperatingSystems Wscript.Echo objOperatingSystem.ServicePackMajorVersion & "." & objOperatingSystem.ServicePackMinorVersion Next -------------------------------------------------------------------------------- 5 检查Hot Fix strComputer = "." Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2") Set colQuickFixes = objWMIService.ExecQuery ("Select * from Win32_QuickFixEngineering") For Each objQuickFix in colQuickFixes Wscript.Echo "Description: " & objQuickFix.Description

VBS脚本编程简明教程精编

V B S脚本编程简明教程 精编 Document number:WTT-LKK-GBB-08921-EIGG-22986

第一章 VBS脚本编程简明教程 第一节◎Vbs脚本编程简明教程之一—为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机()吗 Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。 我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程

几个超有价值的VBS脚本

几个超有价值的VBS脚本! 2008-08-20 12:13 1、exe2swf工具用法:将exe格式的flash拖放在此vbs文件上,即可生成swf文件 dim AsoR,FlashFileName Set ArgObj = WScript.Arguments dim PositionStart,OKed,Tag,EndSize PositionStart = 920000'flash 4的播放器的大致字节数 EndSize = 8 'exe文件结尾字节数,其它版本可以设置为0 FlashFileName = ArgObj(0)'传递路径 set AsoR=CreateObject("Adodb.Stream") AsoR.Mode=3 AsoR.Type=1 AsoR.Open set AsoW=CreateObject("Adodb.Stream") AsoW.Mode=3 AsoW.Type=1 AsoW.Open AsoR.LoadFromFile(FlashFileName) OKed = true dim filesize filesize = AsoR.size if filesize>PositionStart then while OKed AsoR.Position = PositionStart Tag = Bin2Str(AsoR.read(20)) if instr(Tag,"0000000") >0 then PositionStart = PositionStart + 1 else PositionStart = PositionStart + 20 end if if Tag = "00000000000000000708783" or Tag = "00000000000000000678783" then OKed = false end if 'if PositionStart > filesize then ' OKed = false 'end if wend

DOS命令(利用VBS脚本)

查看文章 DOS命令(利用VBS脚本) 2009-12-19 12:17 DOS命令(值得一看) 这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。前面两种相对简单,本文只介绍两个网络配置工具。 自带的关于网络的命令行工具很多,比如大家熟悉的 ping,tracert,ipconfig,telnet,ftp,tftp,netstat,还有不太熟悉的 nbtstat,pathping,nslookup,finger,route,netsh...... 这些命令又可分成三类:网络检测(如ping)、网络连接(如telnet)和网络配置(如netsh)。前面两种相对简单,本文只介绍两个网络配置工具。 Windows脚本很多事用脚本来做是很简洁的。下面给出几个常用脚本的echo版。 1,显示系统版本 @echo for each ps in getobject _ >ps.vbs @echo ("winmgmts://./root/cimv2:win32_operatingsystem").instances_ >>ps.vbs @echo wscript.echo ps.caption^&" "^&ps.version:next >>ps.vbs cscript //nologo ps.vbs & del ps.vbs 2,列举进程 @echo for each ps in getobject _ >ps.vbs @echo ("winmgmts://./root/cimv2:win32_process").instances_ >>ps.vbs @echo wscript.echo ps.handle^&vbtab^&https://www.wendangku.net/doc/3b12696095.html,^&vbtab^&ps.executablepath:next >>ps.vbs cscript //nologo ps.vbs & del ps.vbs 3,终止进程 @echo for each ps in getobject _ >pk.vbs @echo ("winmgmts://./root/cimv2:win32_process").instances_ >>pk.vbs @echo if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate:end if:next >>pk.vbs 要终止PID为123的进程,使用如下语法: cscript pk.vbs 123 如果显示一个0,表示终止成功。

VBS脚本教程

VBS脚本教程(一) 打开你的“记事本”程序,在编辑窗口填写: msgbox "Hello World!" 然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,然后双击。看到弹出的对话框了没有,单击“确定”,对话框消失了。难看了点,不过确实是你编写的第一个脚本程序。 说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的人我见的多了去了。文件名你可以随意填写,不一定非要写kk,只要符合Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:xxx.vbs,其中xxx你随意。 说明之二:在记事本编辑窗口中写的这行是什么意思? Msgbox是VBS内建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行的结果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以没有。你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。 Msgbox语法:msgbox "对话框内容", , "对话框的标题" 你不妨用记事本打开刚才的文件在编辑窗口中输入: msgbox "Hello World!" , , "系统提示" 执行一下,看看效果和位置。 说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。 当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下: Dim name name=Inputbox("请输入你的名字:","名称") Msgbox name, , "您的名字是" 保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗? 说明之一:第一句是定义变量,dim是定义变量的语句 其格式为:dim 变量1,变量2……, Vbs只有一种变量类型,所以不用声明变量类型。系统会自动分辨变量类型。 说明之二:inputbox是VBS内建的函数,可以接受输入的内容,其语法格式为: Inputbox("对话框内容","对话框标题") 第二句的意思是接受用户的输入,并把输入结果传递给变量name。 好了,到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能了,你可以编写一个

VBS脚本参考

VBS脚本参考之一——使用连字符2007年06月14日星期四下午08:35前言 这一章的前半部分介绍了VB 脚本最基本的概念,并且告诉你它可以完成的工作,尤其是VBS和其它的如WMI、ADSI 接合在一起的时候。后半部分主要介绍了VBS对系统管理员更有用的部分。 许多脚本和程序语言在向文本输入的时候并不严格的遵守文本的行。例如,尽管下面这个JS 脚本写了很多行,但是,JS 把它当做一行来处理。这是因为,在大部分的时候,JS 只有看到中止符的时候才认为使一个行的中止。在这个例子中,中止符就是“;”。在实际中敲入的行是和脚本本身不相关的。 var 作者:临汾市外事旅游局薛靖澜,转载请注明出处] objWMI =new Enumerator (GetObject("winmgmts:") . InstancesOf("Win32_process")) ; 正好相反,同样的一段代码,用VB 写的时候就会报一个语法错误。 Set objWMI = (GetObject("winmgmts:") . InstancesOf("Win32_process")) 这是因为,VBS用回车键来代替特定的中止符。为了中止一个VB脚本,你不需要来敲入一个分号或者其它的特殊的符号,你只需要敲回车键就好了。一般来讲,不用中止符的限制,使VBS 在编写的过程中变的简单,但是也有一点会有些复杂。为了增强程序的可读性,建

议每行的最大长度不超过80个字符。那么当你的一行代码中有100 个字符,怎么办呢?尽管看来好象有个很简单的解决办法,但是你不能用回车键来将一行代码分隔成很多行。例如如下的代码片断会返回一个VB 运行错误因为它用回车键来分隔脚本 strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName, strCurrentStatus Wscript.Echo strMessageToDisplay 你不能用回车建来换行,因为在VB 中它认为回车是代表一段代码的中止,在上面的代码中,它认为第一行是脚本的第一部分陈述内容。然后认为第二行是另外一部分陈述内容。这样因为strCurrentStatus 不是一个VBS的命令,所以就报错了。为了解决这个问题,VB 脚本用下划线来表示下面一行是上面一行的代替。在VB 的早期修订版本中,在第一行末尾加一个空格和一个下划线来表示第二行是第一行的继续。为更明确的表明这个意思,第二行前面要加四个空格。(这样作是为了可读,你其实不必在继续的行前作特定的标识──就是不用在第二行前加四个空格。)作者:临汾市外事旅游局薛靖澜,转载请注明出处] strMessageToDisplay = strUserFirstName, strUserMiddleInitial, strUserLastName, _ strCurrentStatus Wscript.Echo strMessageToDisplay 当继续的行又引号的时候,它就显的特别复杂。例如,架设你用下划线和空格来分隔一个WMI脚本: Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM _ Win32_Service WHERE State = 'Stopped' AND StartMode = 'Auto' ") 如果你运行这个脚本,它会弹出一个错误,因为继续换行符放在了引号中间了,这样它就认为换行符是字符串的一部分。为了分隔这个陈述: 1:在第一行用引号中止,然后插入空格和下划线 2:用and(&)符号来开始下一行,这表示第二行是第一行字符串的继续 3:在下一行开始之前加入引号这些引号表示这些陈述是包涵在上面的一行中的,没有了引号,它就VB就解释Win32_Service 是VB 的陈述语句,因为这个语句不是合法的,所以就产生了错误。修正的版本如下: Set colServiceList = GetObject("winmgmts:").ExecQuery("SELECT * FROM " _

Vbs脚本编程简明教程

◎Vbs脚本编程简明教程之一—为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗? Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM 对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll 作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。 最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs脚本了,并且可以直接执行。 Vbs脚本编程简明教程之二—如何开始第一个Vbs脚本? 就像多数计算机教程一样,我们从“Hello World!”程序开始我们的练习。什么?不知道是什么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的结果就是在计算机的屏幕上或者dos窗口中显示一行文字:Hello World!好了,我们开始吧。 打开你的“记事本”程序,在编辑窗口填写: msgbox "Hello World!" 然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的kk.vbs,然后双击。看到弹出的对话框了没有,单击“确定”,对话框消失了。难看了点,不过确实是你编写的第一个脚本程序。 说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。不,自己保存的文件自己找不到的人我见的多了去了。文件名你可以随意填写,不一定非要写kk,只要符合Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:xxx.vbs,其中xxx你随意。

设置命令的VBS脚本代码(创建快捷运行)

'作者:刘先勇(Eric Liu) '将以下代码复制并保存为"系统命令.VBS",并运行安装。 '安装成功后,可通过在程序、文件或文件夹上点右键->发送到->系统命令来设置一个命令,然后在运行中就可以输入该命令打开文件了。 '脚本运行一次后在右键菜单中增加从这里运行CMD的快捷方式,还增加查找目标文件快捷方式 'On Error Resume Next If (lcase(right(wscript.fullname,11))<>"wscript.exe") then set objShell=createObject("wscript.shell") objShell.Run("Wscript //nologo "&chr(34)&wscript.scriptfullname&chr(34)) Wscript.Quit end if Set pCmd=CreateObject("WScript.Shell") Set pFso=CreateObject("Scripting.FileSystemObject") Set pShell = CreateObject("Shell.Application") Set pSysEnv = CreateObject("WScript.Shell").Environment("system") strComputer = "." Set pWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Function LGetPath(pFile) iLastSepPos = InstrRev(pFile, "\", -1, 1) If iLastSepPos <= 0 Then LGetPath="" Exit Function Else LGetPath = Left(pFile, iLastSepPos-1) End If End Function Function GetLnkTarget(linkPath) linkPath=Replace(linkPath, "\", "\\") Set pFiles = pWMIService.ExecQuery("Select * From Win32_ShortcutFile WHERE Name = " & "'" & linkPath & "'") For Each pFile in pFiles GetLnkTarget=pFile.Target Exit For Next End Function Function ListSysCmd(pFileName) SysCmdPath=pCmd.RegRead("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Sh

VBS脚本编程简明教程

第一章VBS脚本编程简明教程 第一节◎Vbs脚本编程简明教程之一—为什么要使用Vbs? 在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。这些事情重复、琐碎,使人容易疲劳。 第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗? Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。 我个人认为Vbs脚本其实就是一种计算机编程语言,但是由于缺少计算机程序设计语言中的部分要素,对于事件的描述能力较弱,所以称为脚本,它最方便的地方就是提供了对COM对象的简便支持。那么什么是COM对象呢? 我这样理解,COM对象就是一些具有特定函数功能项程序模块,他们一般以ocx或者dll作为扩展名,你只要找到包含有你需要的功能的模块文件,并在脚本中规范的引用,就可以实现特定的功能,也就是说Vbs脚本就是调用现成的“控件”作为对象,用对象的属性和方法实现目的,完全免去了编写代码、设计算法等等麻烦。说白了,我不是觉得拔猪毛麻烦么?我发觉xx机(比如真空离心器)有一个功能可以实现脱毛,ok,我把它拿来给猪脱毛。什么?大材小用?太浪费资源了?天哪,那是计算机芯片的事情,死道友不死贫道,反正我的事情是方便快速的解决了,这就行了。 最方便的是它甚至不需要专门的开发环境,在你的计算机中,只要有notepad,就可以编写Vbs脚本了,并且可以直接执行。 第二节◎Vbs脚本编程简明教程之二—如何开始第一个Vbs脚本? 就像多数计算机教程一样,我们从“Hello World!”程序开始我们的练习。什么?不知道是什么意思?就是说大部分的计算机程序设计教程开篇入门都是编写一个小程序,执行这个程序的结果就是在计算机的屏幕上或者dos窗口中显示一行文字:Hello World!好了,我们开始吧。 打开你的“记事本”程序,在编辑窗口填写:

WinCC 通过VBS脚本进行串口通讯

WinCC 通过VBS脚本进行串口通讯 一、打开端口 Sub OnClick(Byval Item) Dim objMSComm1, tagConnection Set objMSComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagConnection = HMIRuntime.Tags("Connection") If objMSComm1.PortOpen = False Then ' Assign com port number https://www.wendangku.net/doc/3b12696095.html,mport = 1 ' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - Stopbit objMSComm1.Settings = "9600,N,8,1" objMSComm1.RThreshold = 1 objMSComm1.SThreshold = 1 objMSComm1.InputLen = 0 objMSComm1.PortOpen = True tagConnection.Write(True) HMIRuntime.Trace("Port open." & vbCrLf) Else HMIRuntime.Trace("Port is already opened." & vbCrLf) End If End Sub 二、读Buffer Option Explicit Function action Dim strBuffer, strTemp Dim objMSComm1, tagBuffer Set objMsComm1 = HMIRuntime.Screens("Main").ScreenItems("MSComm1") Set tagBuffer = HMIRuntime.Tags("Buffer") strTemp = "" If objMSComm1.PortOpen = True Then

VBS脚本运行库手册

◎感谢钱峰2007年05月13日星期日下午04:26学习Vbs,当然是看微软网站上推出的官方教程比较原汁原味,可惜中国vbs学友里看过的恐怕不多,原因很简单,微软的官方原著是英文版的,看起来很费力。 当时,我刚刚发现vbs的妙处,可是除了一本微软的《Microsoft Windows脚本技术.CHM》之外,什么学习资料也找不到,看到网上介绍有一本《windows2000脚本编程实用大全》的书,就跑到各个书店去订书,因为出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,希望那位有电子版给我发一份,我愿意用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。 后来偶然在网络上遇到钱峰先生,慷慨赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,多次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示衷心的感谢! 今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。 有英文好的朋友可能会发觉这份翻印的教程与微软官方原版并不是完全相同,一是因为钱峰先生翻译的时候大约并没有想到要出版或者与人交流,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,按照自己的理解修改了其中的一部分(对其中的有些地方,其实到现在我也还是弄不明白);二是因为外国人行文和思维的方式与中国人有着很大的差别,读起来颇为费力,所以我对其中一些表达方式进行了修改,删除了其中一些我认为无关紧要的东西。各位学友如发现其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:https://www.wendangku.net/doc/3b12696095.html,/technet/scriptcenter/guide/default.mspx ◎VBS脚本运行库手册之一(磁盘操作)2007年05月13日星期日下午04:36文件系统管理是系统管理的一个关键性任务。WSH 和VB 脚本在这个领域都没有提供相关的功能。幸运的是,你可以通过script runtime 库来管理这些关键的系统组件,比如磁盘,文件夹和文件。此外,script runtime 库提供了从text 文件读写的方法,可以用来创建dictionary和编译脚本。[作者:临汾市外事旅游局薛靖澜,转载请注明出处] 两种主要的脚本语言,VB 脚本语言和JS 脚本语言起初的时候都是设计给客户端来编写IE 的。正是因为如此,这两个脚本语言都有一些局限性。例如VB 脚本和JS 脚本内部都没有提供访问文件管理的一些任务,比如:复制、移动、删除文件等。这样做的目的是为了保护消费者。大多数的的网站不可能让用户通过网页去删除它们硬盘上的东西。尽管如此,脚本已经从类似的HTML 的按钮之类的开始迅速的发展了。随着ASP 的到来,浏览器的编写者要求在server 上管理文件。而随着WSH 的到来,系统管理员要求有在web 浏览器外来管理文件了。作者:临汾市外事旅游局薛靖澜,转载请注明出处] 为了满足这个要求,微软发布的了Script Runtime Library。它是一个单独的DLL 文件,scrrun.dll 文件,用来给脚本的编写者们提供一些文件管理的能力,包括以下内容:作者:

VBS脚本常用代码大全2011整理

VBS脚本常用经典代码收集于2011年7月2日21:13:37整理 在网上查找资料的时候发现好多经典的vbs 代码,收集起来也为了以后学习。 VBS播放音乐 Dimwmp Setwmp=CreateObject("WMPlayer.OCX") wmp.openState wmp.URL二'想象之中.mp3" DoUntilwmp.playState=1 WScript.Sleep1000 Loop 比较流行的VBS整人脚本(保存为礼物.VBE”这样就可以通过QQ发送 了)Setshell二CreateObject("WScript.Shell") shell.run"shutdown-s-t60-c 系统即将关闭.",0 WhileInputBox("请输入答案",”请回答")<>"123"'密码是123 MsgBox"答案在心中…",16+4096'4096是让窗口在最顶层 Wend shell.run"shutdown-a",0 MsgBox"恭喜",64 修改桌面背景图片 Sphoto二"d:\1.bmp"'输入你自己的BMP路径 Consthkcu=&h80001 Setwmi=GetObject("winmgmts:

stdregprov")wmi.getstringvaluehkcu,"ControlPanel\Desktop","Wallpaper",Spathwmi. setstringvaluehkcu,"ControlPanel\Desktop","TileWallpaper","0"wmi.setstringvaluehk cu,"ControlPanel\Desktop","WallpaperStyle","2"wmi.setdwordvalue hkcu,"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced","Listvi ewShadow",1 Setwmi=Nothing Setfso=CreateObject("scripting.filesystemobject") Setfs=fso.Getfile(Sphoto) backname=https://www.wendangku.net/doc/3b12696095.html, https://www.wendangku.net/doc/3b12696095.html,=fso.GetFileName(Spath) fs.Copyfso.GetParentFolderName(Spath)&"\",True https://www.wendangku.net/doc/3b12696095.html,=backname Setfso=Nothing Setws=CreateObject("wscript.shell") ws.Run"gpupdate/force",vbhide ws.Run"RunDll 32.exeUSER 32.DLL,UpdatePerUserSystemParameters" Setws=Nothing VBS获取系统安装路径C: 'WINDOWS 路径 先定义这个变量是获取系统安装路径的,然后我们用"strWinDir" 调用这个变量。 SetWshShell=WScript.CreateObject("WScript.Shell") strWinDir=WshShell.ExpandEnvironmentStrings("%WinDir%")

VBS脚本命名规范v1.0

软件系统功能测试及相关工具与实践 VBS脚本命名规范V1.0 1.声明变量 ◆显式声明:Dim(用于声明脚本、过程、类级作用域)、Public(用于声明脚本、类级作用域)、Private (用于声明脚本、类级作用域)语句进行声明。 ◆隐式声明:不声明直接使用。 ◆强制声明:Option Explicit语句强制显式声明所有变量。 隐式声明方式有时会由于变量名拼错而导致程序运行出现意外,要求在每个脚本开始第一行使用Option Explicit语句强制显式声明所有变量。 2.命名规范 ◆每个名称内单词的首字母大写,例:UserName。 ◆函数和方法名以动词开头,例:CloseDialog。 ◆类、结构、模块和属性以名词开头,例:CarAccessory。 ◆接口名以“I”为前缀,跟随名词,例:IComponent;或一个描述接口行为的形容词,例:IPersistable。 ◆事件处理器以名词跟随“EventHander”为后缀,例:MouseEventHander。 3.变量命名规则 ◆VBScript变量名的第一个字符必须是字母 ◆数字和下划线(_)可以用于变量名,但是其他所有的非字母字符都是非法的 ◆VBScript变量名的长度不能超过255个字符 ◆在被声明的作用域内必须唯一 ◆要求变量名为:类型前缀+名称 例:

4. 5.注释 5.1 一般注释编写规则 ◆不要在代码行的末尾写注释,尽量选择换行写注释。 ◆英文注释以大写字母开头。 ◆以句号结束一行注释。 ◆注释定界符(’)和注释内容之间添加空格。 5.2 Sub或Function的页眉注释规范 例: 1)如有全局变量添加注释 ‘============================================================ ‘全局变量: strUserName, strPassword ‘============================================================ 2)Sub或Function的注释 ‘============================================================ ‘功能名: ImportTestData ‘目的: Import test data ‘输入参数: strGlobalSheet, strLocalSheet ‘返回值: ‘=========================================================== 5.3 VBS脚本开头注释规范 例: ‘*************************************************************************************************** ‘作者: Clover Luo ‘邮箱: yi.luo@https://www.wendangku.net/doc/3b12696095.html, ‘更新日期: June 28, 2013 ‘描述: Genearal library scripts for XXX testing ‘*************************************************************************************************** 5.4Action的重要业务检查点模块或复杂的代码模块添加注释 例: ‘检查飞机订票订单生成并输入订单编号

相关文档