VBS脚本运行库手册

VBS脚本运行库手册
VBS脚本运行库手册

◎感谢钱峰2007年05月13日星期日下午04:26学习Vbs,当然是看微软网站上推出的官方教程比较原汁原味,可惜中国vbs学友里看过的恐怕不多,原因很简单,微软的官方原著是英文版的,看起来很费力。

当时,我刚刚发现vbs的妙处,可是除了一本微软的《Microsoft Windows脚本技术.CHM》之外,什么学习资料也找不到,看到网上介绍有一本《windows2000脚本编程实用大全》的书,就跑到各个书店去订书,因为出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,希望那位有电子版给我发一份,我愿意用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。

后来偶然在网络上遇到钱峰先生,慷慨赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,多次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示衷心的感谢!

今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。

有英文好的朋友可能会发觉这份翻印的教程与微软官方原版并不是完全相同,一是因为钱峰先生翻译的时候大约并没有想到要出版或者与人交流,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,按照自己的理解修改了其中的一部分(对其中的有些地方,其实到现在我也还是弄不明白);二是因为外国人行文和思维的方式与中国人有着很大的差别,读起来颇为费力,所以我对其中一些表达方式进行了修改,删除了其中一些我认为无关紧要的东西。各位学友如发现其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:https://www.360docs.net/doc/5111121693.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 文件,用来给脚本的编写者们提供一些文件管理的能力,包括以下内容:作者:

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

1、获取文件系统的信息,包括获得磁盘、文件和文件夹上的信息。

2、复制,移动和删除文件及文件夹

3、创建和读写文本文件。

除了这些功能之外,Script Runtime Library 提供了创建字典的能力。也可以用来对脚本进行编译,使脚本成为加密的。

Note:

这章只是讨论FileSystemObject 和Dictionary 的部分,对于Encode 部分不作讨论,Script Runtime Library 也是windows 2000 的一部分,它在你安装或者升级微软的应用程序的时候也随着升级和安装了:这些应用程序有以下几个:

1、WSH

2、VB 脚本

3、IE 浏览器

4、Microsoft Office

5、FileSystemObject

正如它的名字一样,FSO 设计用来帮助你管理文件系统,FSO 允许你获取重要的文件组件信息,包括硬盘、文件夹、文件;也提供一般的系统管理的任务,比如复制、删除、移动文件和文件夹。此外FSO 允许你读写文本文件。

用FSO 其实有些用词不当,因为实际上FSO 包含很多个对象,每个对象被设计成用来完成特定的目的。组成FSO 的对象列在了下表中:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Drive 代表系统中磁盘或者磁盘的集合

File 代表系统中的一个文件或者文件的集合

Folder 代表文件系统中的一个文件夹或者多个文件夹

TextStream 代表文本文件中的读取、写入或者提交字符串

※磁盘管理

磁盘管理是系统管理的一个重要的部分。作为一个系统管理员,知道安装在这个计算机上磁盘是十分重要的,当然,知道这个磁盘的属性、磁盘类型、子盘大小、总共和剩余空间也是同等重要的。作为一个脚本的编写者,你有两个主要的选择来管理磁盘:WMI &FSO。一般来讲,WMI 更是管理磁盘的首选项,主要有以下几个原因:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1、WMI 能返回一些FSO 无法返回的属性,比如磁道、扇面等。

2、FSO 不能返回一个目标磁盘。而是返回所有的磁盘,然后进行筛选出你感兴趣的磁盘。而你可以用WMI 通过磁盘符号来返回特定的磁盘,WMI 可以用来返回远程计算机上磁盘的信息,但是FSO 不可以,除非它用wshcontroller对象。

虽然WMI 或许是获得磁盘信息的最好工具。但是这里至少有两个原因使你必须去熟悉FSO。

第一:因为有些低端的操作系统无法安装WMI,所以只能使用FSO;作者:临汾市外事旅游局薛靖澜,转载请注明出处]

第二:最重要的一点是因为:脚本的编写者们在想到获取磁盘信息的时候就会用到FSO,而你作为系统管理员,可能会来看其它人的脚本,这样就需要了解FSO。注:外国人写的真是拗口,我理解这句话的意思就是说FSO比WMI应用的更广泛一些。

※如何返回磁盘信息

在你管理计算机的磁盘之前,你需要知道你的计算机上实际上有多少磁盘可以使用。FSO 允许你管理安装在计算机上的所有磁盘,包括移动硬盘和网络硬盘(就是只要是有盘符的就可以了)为了返回这个集合,你需要首先创建一个FSO 实例,然后创建磁盘属性的对象。当这个集合返回后,你可用一个For Each 的循环来重述这个集合。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

例如,下面的脚本就是要返回安装在本地计算机上的磁盘集合然后返回它们的盘符:

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set colDrives = objFSO.Drives

3 For Each objDrive in colDrives

4 Wscript.Echo "Drive letter: " & objDrive.DriveLetter

5 Next

◎VBS脚本运行库手册之二(磁盘操作)2007年05月13日星期日下午04:38※如何绑定指定磁盘

如果你事先知道要绑定的磁盘(例如C 盘或一个共享文件夹\\accounting\receivables),你可以用GetDrive 的方法来直接绑定磁盘。这样你可以不用去筛选就获得特定磁盘的信息。GetDrive 需要一个单独的参数:磁盘符号或者是共享文件夹的UNC 路径。你可以用如下的几种格式:C C: C:\ 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

在下面的脚本中首先创建一个FSO 对象,然后用GetDrive 的方法来直接绑定C盘,然后回显可用的磁盘空间:

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objDrive = objFSO.GetDrive("C:")

3 Wscript.Echo "Available space: " & objDrive.AvailableSpace

注意,这里没有For Each 循环,你就可以获得磁盘的属性。因为脚本是返回一个单独的磁盘对象,而不是所有对象的集合。因此也就不用筛选了。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

※如何列举磁盘驱动器的属性

磁盘集合的作用总是用来监视和列举的。作为一个系统管理员,你需要知道计算机上的可用磁盘,也需要知道磁盘的序列号、可用空间等信息。在你获得当前磁盘的集合或者单个磁盘的时候,你就可以获得下表列出的所有属性。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1、AvailableSpace——报告磁盘上可以使用的空间,单位是bytes。如果想以kb 为单位返回,除以1024,如果想以M 为单位返回,则除以 1.048,576。这个属性返回的是可用的磁盘空间的总数。如果一个磁盘启用了磁盘限额,那么他返回的数字可能比实际的要小。

2、DriveLette——返回特定磁盘的盘符。这个盘符不包含那么冒号。例如软盘返回的是A,而不是A:

3、DriveType——整数的值代表不同的磁盘类型:1:移动硬盘2:硬盘3:网络硬盘作者:临汾市外事旅游局薛靖澜,转载请注明出处]

4:CD-ROM 5:RAM 磁盘

4、FreeSpace——返回磁盘剩余空间的总额。单位是bytes,如果是返回的单位是kb,就除以1024,如果是以M 为单位,除以1,048,576。注意:这个和磁盘可用空间不一样,剩余的磁盘空间不会考虑磁盘限额。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

5、FileSystem——返回文件系统的类型(FA T,FAT32,NTFS)

6、IsReady——标识磁盘是否可以访问。这个值来判断软盘和CD-ROM是否为空

7、Path——磁盘路径。对于本地磁盘,返回盘符和脱尾符(就是那个冒号),比如A:对于网络磁盘,就返回它的UNC 路径。

8、RootFolder——返回磁盘根目录下的文件夹。

9、SerialNumber——磁盘的生产商给磁盘分配的序列号。对于软盘和网络硬盘来说,它们

的值是0。

10、ShareName——分配给网络驱动去的共享名称。

11、TotalSize——报告整个的磁盘空间,单位是bytes,如果想以kb 为单位,除以1024,如果想以M 为单位返回,则单位为1,048,576。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

12、V olumeName——分配给磁盘的卷名。

为了列举安装在计算机里的磁盘的属性,创建一个FSO 实例,然后创建一个FSO 属性的对象,用For Each 循环,来重现各个磁盘的配置。对于集合当中的每个磁盘,你可以返回一个或者的属性。如下列脚本列举出安装在计算机上所有磁盘的所有属性。

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set colDrives = objFSO.Drives

3 For Each objDrive in colDrives

4 Wscript.Echo "Available space: " & objDrive.AvailableSpace

5 Wscript.Echo "Drive letter: " & objDrive.DriveLetter

6 Wscript.Echo "Drive type: " & objDrive.DriveType

7 Wscript.Echo "File system: " & objDrive.FileSystem

8 Wscript.Echo "Is ready: " & objDrive.IsReady

9 Wscript.Echo "Path: " & objDrive.Path

10 Wscript.Echo "Root folder: " & objDrive.RootFolder

11 Wscript.Echo "Serial number: " & objDrive.SerialNumber

12 Wscript.Echo "Share name: " & objDrive.ShareName

13 Wscript.Echo "Total size: " & objDrive.TotalSize

14 Wscript.Echo "V olume name: " & objDrive.V olumeName

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

上述脚本有个潜在的缺点,就是如果没有软盘或者光驱里面没有光盘,会产生一个disk not ready 的错误出来。当磁盘没有准备好的时候用FSO 来访问会有些错误的。虽然FSO 可以标识那些没有准备好的磁盘,但是你访问它的一些属性的时候会报错出来,比如AvailableSpace 或FreeSpace。如果磁盘没有准备好,你只可以访问如下的四个属性:DriveLetter、DriveType、IsReady、ShareName。所有尝试访问其它属性都会报错。

幸运的是,IsReady 属性允许你用脚本来检查一个磁盘是否准备好了。IsReady 返回一个Boolean 值,如果这个值是true,则磁盘准好了,你可以访问它的所有属性,否则如果这个值是false,则磁盘没有准备好,只能返回上面的四个属性了。可以对每个磁盘,用IsReady 属性来保证磁盘是准备好的。如果是就返回磁盘的盘符和剩余空间,如果不是就只返回磁盘的盘符。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set colDrives = objFSO.Drives

3 For Each objDrive in colDrives

4 If objDrive.IsReady = True Then

5 Wscript.Echo "Drive letter: " & objDrive.DriveLetter

6 Wscript.Echo "Free space: " & objDrive.FreeSpace

7 Else

8 Wscript.Echo "Drive letter: " & objDrive.DriveLetter

9 End If

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

Note:这个问题不会发生在WMI 上(如果软盘或者光驱中没有盘,脚本就会失败),WMI 只是认为返回的空间为Null

◎VBS脚本运行库手册之三(管理文件夹)2007年05月13日星期日下午04:40※管理文件夹

磁盘的属性比如磁盘的剩余空间,磁盘的总额提供了一个全局的信息给系统管理员。但是,对于系统管理而言,磁盘的信息虽然是必须的,但是还不够。知道文件存储在哪个盘固然重要,但是你也需要知道文件是存储在哪个文件夹下的。此外许多的系统管理任务都是发生在文件夹级别的,比如复制,移动,删除和列举文件夹的内容。

FSO 可以返回一个磁盘上文件夹的全部信息。此外,FSO 提供了一系列的方法来完成诸如:

复制、移动、删除文件夹的操作。

※如何绑定指定的文件夹

在微软的调用文件中,文件夹是COM 对象。这就是说在你访问一个单独的文件夹的属性时,你必须去创建一个文件夹的对象reference,这个过程叫做绑定。你可以用FSO和GetObject的方法来绑定到一个文件夹。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

当用GetFolder 的时候,你必须:路径既可以写成本地路径也可以写成UNC 路径(例如:\\accounting\receivables)。但是通配符不能出现在路径当中。此外,你不可以创建一个单独的对象reference 来同时绑定到多个文件夹。例如,如下的脚本代码会产生一个错误:

objFSO.GetFolder("C:\FSO", "C:\Scripts")

如果你想针对多个文件夹同时工作,你要么用WMI 或者用针对每个文件夹创建单独的对象reference。

在设置的时候Set 这个关键词是必须的,因为你要标识这个对象reference 变量。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

例如下面的脚本绑定文件夹C:\FSO

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.GetFolder("C:\FSO")

虽然通配符是不允许的,但是你可以用点来关联到当前的文件夹(.),你可以用点点(..)来绑定到父文件夹,用\ 绑定到根文件夹。例如如下代码语句绑定到当前的文件夹:

Set objFolder = objFSO.GetFolder(".")

※检验文件夹是否存在作者:临汾市外事旅游局薛靖澜,转载请注明出处]

许多的文件夹的操作包括复制、移动、删除需要特定的文件夹存在才可以对其进行操作。毕竟,脚本不能复制、移动、删除这些不存在的文件夹,如果一个脚本尝试去对一个不存在的文件夹执行类似的操作,那么会报错“path not found”。为了避免这样的问题发生,你可以用FolderExists 方法来在你绑定一个文件夹之前检查文件夹是否存在。FolderExists 用一个简单的参数(文件夹路径)来返回一个Boolean 值,如果文件夹存在,返回的值为True,否则返回的值为False。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

例如,下例中列出的脚本,FolderExists 方法来检查文件夹C:\FSO 是否存在。如果存在,脚本用GetFolder 方法来绑定文件夹。如果不存在,脚本就弹出一个message box 说:Folder does not exist.

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 If objFSO.FolderExists("C:\FSO") Then

3 Set objFolder = objFSO.GetFolder("C:\FSO")

4 Wscript.Echo "Folder binding complete."

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

6 Wscript.Echo "Folder does not exist?"

7 End If

※如何建立文件夹

你不可能永远都使用你现有的文件系统结构,从来不去更改你的文件系统结构。而事实上,文件系统是动态的,因为需要变动,现存的文件夹可能被删除,新的文件夹可能被创建。例如,你的单位在file servers 上给用户提供空间,你需要在每个新用户来的时候创建一个新的文件夹给他。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

FSO给脚本编写者提供了这样的能力,可以让你通过脚本来创建文件夹。例如在上例中脚本检查特定的文件夹是否存在,如果存在,脚本用GetFolder 的的方法来绑定到这个特定的文件夹,如果不存在,脚本弹出一个消息框。虽然这个方法避免了脚本的失败,但是你或许更希望在文件夹不存在的时候来创建一个文件夹,而不是简单的报告说文件夹不存在。为了做到这点,首先创建一个FSO 对象实例,然后用CreateFolder 方法,将文件夹的完成路径作为参数,例如,下面脚本用这个方法来创建一个新的文件夹C:\FSO

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.CreateFolder("C:\FSO")

如果文件夹存在,那么会报错说”file exists”。基于此,你需要在创建文件夹的之前检查文件对象是否存在。

Note:FSO 只能在本地创建文件夹。如果你想在远程的计算机上创建文件夹,你需要用到wshcontroller 对象。你可以在本地创建文件夹然后用WMI 来将文件夹移动到远程的计算机上。(这个文件夹只能先创建再用WMI 移动,因为WMI 不支持创建文件夹的方法。)作者:临汾市外事旅游局薛靖澜,转载请注明出处]

※删除文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]

当你要删除文件夹时,例如你用文件服务器存储每一个员工的数据,当这个员工离开单位时,他的文件夹将被删除。这保证了文件服务器上的磁盘空间,同样,你或许用一个脚本来创建

一个文件夹来存储临时文件,当脚本执行完毕的时候,你会删除这个临时的文件。DeleteFolder方法使你可以删除文件夹和文件夹下的所有文件。DeleteFolder需要一个单独的参数:文件夹的完全路径。例如下面脚本用来删除C:\FSO 和其它所有的东西。

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 objFSO.DeleteFolder("C:\FSO")

这个方法会立即删除所有的文件,它不会让你确认是否需要删除就将其扔到垃圾筒。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

※使用通配符(Wildcards)删除文件夹

脚本的最大的一个优点就是作为一个管理工具,脚本操作可以同时删除许多个项目。例如你可以用脚本的一个单独的操作就可以删除所有的文件和文件夹,而不用一个一个去删除了。

FSO 允许你用通配符来删除一些特定的文件。例如你希望删除某文件夹下所有以s 开头的文件夹,这可以用下面的命令来完成。当用类似这样的文件夹结构来运行这个的时候,那么文件夹subfolder1,subfolder2,scripts 都会被删除。

objFSO.DeleteFolder("C:\FSO\S*")

下面这个脚本用来删除以su 开头的文件夹,就是说subfolder1,subfolder2 会被删除。

objFSO.DeleteFolder("C:\FSO\Su*")

通配符只能放在文件路径的最末尾。

例如如下代码将通配符放在路径的中间,会报错:path not found

objFSO.DeleteFolder("C:\*\Subfolder1")

◎VBS脚本运行库手册之四(管理文件夹)2007年05月13日星期日下午04:41※复制文件夹及文件夹下的内容作者:临汾市外事旅游局薛靖澜,转载请注明出处]

复制文件夹和文件夹当中所有数据能力的对于系统管理任务来说非常重要。有时你需要复制文件夹来创建备份,在计算机 A 和计算机 B 上有同样的文件夹,如果计算机 B 意外的down 掉之后,你就不怕数据丢失了。在其它的时候,你或许希望将含有特定文件的文件夹复制到很多台计算机上。用脚本来向各个计算机复制这个文件夹比手工复制高效的多。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1、CopyFolder 方法允许你复制一个文件夹到另外一个地方。当不用通配符的时候,这个CopyFolder 的方法和命令Xcopy /E 命令一样:它拷贝所有的文件和子文件夹,包括空的文件夹。这个命令需要两个参数:源文件夹->这个文件夹可以被确定为本地路径(C:\Script)

或者为UNC 路径(\\helpdesk\scripts)。目标文件夹->这个文件夹也可以是本地文件夹和UNC 路径。如果目标文件夹不存在,那么将自动创建一个文件夹。此外这个方法有个可选的参数:Overwrite,当这个参数存在时,默认的情况下脚本会覆盖已经存在的目标文件夹。

Note:CopyFolder 方法会在遇到错误时停止,即使这个脚本中包含有On Error Resume Next 语句。例如你用脚本用来拷贝100 的子文件夹,当成功拷贝三个之后,遇到一个错误。这时脚本会中止,它不去尝试剩下的97 的文件夹。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

在下例中用CopyFolder 的方法来复制文件夹C:\scripts 到c:\FSO 并且复写目标文件夹。注意,这个的结果不是C:\FSO\Scripts 而是C:\FSO 下有和C:\Scripts 有同样的文件。如果你想更改文件夹叫C:\FSO\Scripts,你应该将目标文件夹改为C:\FSO\Scripts

1 Const OverWriteFiles = True

2 Set objFSO = CreateObject("Scripting.FileSystemObject")

3 objFSO.CopyFolder "C:\Scripts" , "C:\FSO" , OverWriteFiles

Note:因为这个CopyFolder 是一个单独的操作,你没有办法来跟踪它的进程。你只是需要简单的等待操作的结束。如果你想监视copy 命令的过程,你应该用shell 应用程序。

※使用通配符(Wildcards)复制文件夹

用这个CopyFolder 命令也可以拷贝所有文件夹和子文件夹下的文件。这样可能导致一个问题,如果只是想拷贝C:\FSO 下的文件,而不是想拷贝C:\FSO\Subfolder1,C:\FSO\Subfolder2,C:\FSO\Sbufolder3 下的文件。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

可是,不幸的是这里没有直接的办法来不拷贝子文件夹中的文件而只是拷贝父文件夹中的文件,你可以用通配符来限制子文件夹的拷贝。例如如下的脚本代码只是拷贝以log 字母开头的文件夹。但是,你用通配符的时候就只是拷贝那些符合特定要求的文件夹才被拷贝:

objFSO.CopyFolder "C:\Scripts\Log*" , "C:\Archive", True

当上面的脚本代码执行的时候,C:\Scripts\logs,C:\Scripts\Logfiles 被拷贝了,包括它们的文件和子文件夹中的文件。但是,在C:\Scripts 的文件没有被拷贝。当你用CopyFolder 方法的时候,你不能只是拷贝文件夹中的文件,而不拷贝子文件夹中的蚊子。如果你想只是拷贝文件而不拷贝子文件夹的文件,你可以应用CopyFile 方法。

※移动文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]

当你复制一个文件夹从一个地方到另外一个地方的时候,你以复制结束而告终。有时候这个正是你想要的,但是有的时候,你不需要两份文件的信息,你或许希望将文件夹从计算机A

移动到计算机B,或者从硬盘 C 移动到硬盘D。移动工作总会移动到特定磁盘的剩余空间上。例如你或许会周期的将很少访问的文件夹移动到存档磁盘中。此外你或许有一个脚本来监视本地计算机的信息,当监视结束的时候,你需要将它上传到服务器,然后将本地文件删除,然后本地计算机就开始下一次的监视。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

MoveFolder 需要两个参数:

1、Source folder 源文件夹,可以是本地路径或者是UNC 路径。

2、Destination folder 目标文件夹,这个文件系也可是本地或者UNC 路径。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

如果你的目标文件夹不存在,那么移动是成功的。如果目标文件夹存在,那么不成功。你不能用这个MoveFolder 的方法来覆盖一个文件夹。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

下例脚本中,移动本地的文件夹C:\Scripts 到一个共享的文件夹\\helpdesk\management

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 objFSO.MoveFolder "C:\Scripts" , "\\helpdesk\management"

注意用MoveFolder 方法当脚本失败后不能循环操作。例如,假如你的网络连接在脚本将文件从一个计算机移动到另外一个计算机完成前失败了,那么很有可能你一些文件在计算机A 上,另外一些文件在计算机 B 上,也有可能在移动的过程中丢失一些文件。因为这个MoveFolder 的方法无法让脚本恢复到以前状态。

因为如此,你或许需要两个方法来完成文件在网络中的移动:CopyFolder 和DeleteFolder。你可以用CopyFolder 来将文件从计算机A 移动到计算机B。当复制的操作结束之后,你用DeleteFolder 来删除计算机A 上的文件,当复制操作失败的时候,你可以确保你的文件还在你的计算机上。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

※重命名文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]

在FSO中没有提供RenameFolder 方法重新命名文件夹。但是可以用MoveFolder方法来将文件夹移动到相对同样的位置,例如假如有文件夹路径如下:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

C:\Scripts\PerformanceMonitoring\Servers\Domain Controllers\Current Logs

如果你用Windows 浏览器来更改文件夹的名字,那么文件夹还是它本身作者:临汾市外事旅游局薛靖澜,转载请注明出处]

C:\Scripts\PerformanceMonitoring\Servers\Domain Controllers\Archived Logs

MoveFolder 的方法可以让你完成同样任务,你将

C:\Scripts\PerformanceMonitoring\Servers\Domain Controllers\Current Logs作为源路径,将C:\Scripts\PerformanceMonitoring\Servers\Domain Controllers\Archived Logs 作为目标路径。这样的结果和在windows 浏览器中更改文件夹的名字效果是样的。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

例如,下例中的脚本将文件夹C:\FSO\Samples更改为C:\FSO\Scripts在脚本运行之前,Sample 是C:\Scripts的文件夹,在脚本运行之后,就是C:\FSO的子文件夹了。此外Scripts (FSO 下的)含有原来Sample 所有的文件和子文件。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 objFSO.MoveFolder "C:\FSO\Samples" , "C:\FSO\Scripts"

◎VBS脚本运行库手册之五(文件夹属性)2007年05月14日星期一下午08:52※获得文件夹属性作者:临汾市外事旅游局薛靖澜,转载请注明出处]

因为文件夹是一个COM 对象,它们的属性可以被获得和列举出来,为了列举详细的文件夹信息,你可以用文件夹对象,它是FSO 的组件之一。文件夹对象的属性列举在了下表中。

Attributes 关于文件夹的属性信息。

DateCreated 文件夹创建的日期

DateLastAccessed 用户最后访问这个文件夹的日期

DateLastModified 用户最后更改文件夹属性的日期

Drive 磁盘信息包括拖尾符号(比如,C:)标识文件夹所在的磁盘作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Files 存储在这个文件夹中所有文件的信息。

IsRootFolder Boolean 值来表明这个文件夹是否是根文件夹

Name 文件夹的名字但不包括路径信息

ParentFolder 文件夹存放的父文件夹的名字

Property Description

Path 文件夹的路径

ShortName MS-DOS 类型的文件夹的名字,遵循8.3 的命名规则。

ShortPath MS-DOS 类型的文件夹的名字,遵循8.3 的命名规则。

Size 文件夹的大小,单位是bytes,包含子文件和子文件夹的大小在内。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

SubFolders 第一层的子文件夹。在Subfolders 中的子文件夹不在此列中。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Type 对于文件夹的描述

※列举文件夹的属性

为了得到一个文件夹的属性,一个脚本必须:

1.创建一个FSO 实例

2.用GetFolder 的方法绑定特定文件夹

3.用Echo 的方法显示属性。

当你对一个文件夹的属性进行操作的时候,注意文件的属性和子文件夹的属性是以集合的形式返回的,不是单独返回一个的。此外Attributes 属性返回一个属性值。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.GetFolder("C:\FSO")

3 Wscript.Echo "Date created: " & objFolder.DateCreated

4 Wscript.Echo "Date last accessed: " & objFolder.DateLastAccessed

5 Wscript.Echo "Date last modified: " & objFolder.DateLastModified

6 Wscript.Echo "Drive: " & objFolder.Drive

7 Wscript.Echo "Is root folder: " & objFolder.IsRootFolder

8 Wscript.Echo "Name: " & https://www.360docs.net/doc/5111121693.html,

9 Wscript.Echo "Parent folder: " & objFolder.ParentFolder

10 Wscript.Echo "Path: " & objFolder.Path

11 Wscript.Echo "Short name: " & objFolder.ShortName

12 Wscript.Echo "Short path: " & objFolder.ShortPath

13 Wscript.Echo "Size: " & objFolder.Size

14 Wscript.Echo "Type: " & objFolder.Type

※管理文件夹的属性作者:临汾市外事旅游局薛靖澜,转载请注明出处]

文件系统支持属性的定义。就是文件夹中和文件夹名字和文件夹大小无关的信息。例如如果你在Windows 浏览器中右击某个数据夹的时候,点Properties 你就可以访问文件夹的属性了。

FSO 可以返回几个关于文件夹信息的重要属性。这些属性和相应的值,列举在下表中:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Hidden 2 隐藏,就是在Windows 浏览器中不可见

System 4 表示它是一个系统文件夹。建议不要更改系统文件夹的内容。

Directory 16 应用到所有的文件夹的标准值。所有可以被FSO 访问的文件作者:临汾市外事旅游局薛靖澜,转载请注明出处]

夹读有这个值,最小位16。

Archive 32 存盘的属性用在备份程序中,用来决定文件是否需要备份。

如果这个值enabling 表示文件夹在下一次增量备份中会备份。如果

是disabling 表示不在下一次增量备份中备份

Compressed 2048 表明这个文件夹是否是压缩的

虽然这些看起来很简单,但是从FSO返回的数据看起来会让你感到很迷惑。例如,你返回一个文件夹的属性值,你或许会看到20,但是这个值并不是像上面一样的标准值。此外,你可能会获得一个单独的值,虽然这个文件夹有说有的属性。这种情况是,脚本并不是返回如2,4,16,32,2048 这样的值,而只是返回一个2102。这是因为这些值是以位图的形式显示

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

◎VBS脚本运行库手册之六(文件夹属性)2007年05月16日星期三下午08:57Note:对于属性值,它返回和存储的数据是以位图的形式的。对于位图你应该不会奇怪,比如后缀名为.bmp 的图形文件

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

位图看起来就是一系列的开关。如果特定的开关是关闭的,那么这个开关的值就是0,如果是开启的,比如文件夹对象吧,它就具有上表中所列出的值。而位图的值就是这些开关的值的总和。如果你用脚本查询这个文件夹的属性,脚本就返回一个值为16.

与其相反,如果有三个开关是开启的:隐藏(值是2),Directory(值是16),压缩(值是2048).那么这个位图的值应该是2+16+2048,或者值是2066。这个也是用脚本查询的时候返回的值。位图被设计成只是有一种办法来获取特定的值。得到值2066 的方法只有一个就是压缩和隐藏。你不可能通过别的数学方法来算得这样的值。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

这个设计可以返回值并且决定哪个开关没有开哪个没有开。这个可以允许你来判断文件夹的哪个属性设定了。如果你得到了这个2066 的值,那么它的属性就是隐藏压缩的文件夹。幸运的是,你不必去作任何单独的数字运算,你可以用逻辑与AND 操作来决定哪个开关是否是on 还是off。例如如下代码查询文件夹是否是隐藏的,如果是回显一个信息框:Hidden folder

If objFolder.Attributes AND 2 Then

Wscript.Echo "Hidden folder."

End If

或者:If objFolder.Attributes AND 16 Then

下列脚本先绑定文件夹C:\FSO,然后回显文件夹属性:

(译者注:这个其实是挨个匹配的,所以你要是测试了两个属性,它都会显示出来的。)

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.GetFolder("C:\FSO")

3 If objFolder.Attributes AND 2 Then

4 Wscript.Echo "Hidden folder."

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

6 If objFolder.Attributes AND 4 Then

7 Wscript.Echo "System folder."

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

9 If objFolder.Attributes AND 16 Then

10 Wscript.Echo "Folder."

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

12 If objFolder.Attributes AND 32 Then

13 Wscript.Echo "Archive bit set."

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

15 If objFolder.Attributes AND 2048 Then

16 Wscript.Echo "Compressed folder."

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

※改变文件夹属性

文件夹的每个属性可以看成一个个开关,如果关于隐藏的开关是ON 的,那么这个文件夹就是隐藏的,如果这个开关是OFF 的,那么这个文件夹就不是隐藏的,你可以选择打开或者关掉它们,对于文件夹的属性也是如此:对于其它的开关,你可以将属性设置为开或者设置为关,你可以用脚本来控制这些开关的,最简单的控制属性开关的办法是用如下的程序:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

1. 用GetFolder 的方法来绑定到一个文件夹。

2. 检查你需要更改的值。例如你想隐藏一个文件夹,看这个文件夹是否是已经隐藏了作者:临汾市外事旅游局薛靖澜,转载请注明出处]

3. 如果这个文件夹是隐藏的,用XOR 操作来将开关转换成非隐藏的。如果这个文件夹不是隐藏的,注意不要用XOR,如果你用了,开关会被触发,文件夹会中止于隐藏。例如,下列脚本用AND 来判断文件夹C:\FSO 的隐藏属性开关是否开着。如果它是开的,脚本用XOR 操作来将开关关闭来显示文件夹。

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.GetFolder("C:\FSO")

3 If objFolder.Attributes AND 2 Then

4 objFolder.Attributes = objFolder.Attributes XOR 2

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

除非很少的一些情况以外,文件夹用来作为单独存放文件的地方。有时候,这些文件夹是系统需要的。例如操作系统希望在特定的文件夹内找到特定的文件。在其它的一些时候,文件夹是系统管理员管理计算机的一种工具也是用户管理文件的工具。系统管理员可能希望将脚本放在叫做Scripts 的文件夹,将一些trouble-shooting 的工具放在叫做Diagnostic Tools 的文件夹。用户或许将他们预算信息放在叫做Budgets 的文件夹,而将薪水的信息放在叫做Timecards 的文件夹。当然,文件夹一般是限制使用的,你必须知道这个文件夹是存放的是什么文件。系统管理员需要知道是不是有个特定的脚本存在C:\Scripts 文件夹中,用户需要知道是不是有个特定的窗体存在C:\Budgets 的文件夹中。文件夹对象包含了一些属性可用来返回存储在文件夹内文件集合的信息,为了得到这些信息,你的脚本必须:

1. 创建一个FSO 对象实例。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

2. 用GetFolder 的方法来绑定到一个适当的文件夹。

3. 设置一个对象reference 来指向文件夹的属性

4. 用For Each 循环来列举出所有的文件和他们的属性。脚本不必去绑定到每一个单独的文件去获得文件的信息。

在下列脚本中返回在文件夹C:\FSO 下所有文件的信息并且回显他们的名字和大小:

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 Set objFolder = objFSO.GetFolder("C:\FSO")

3 Set colFiles = objFolder.Files

4 For Each objFile in colFiles

5 Wscript.Echo https://www.360docs.net/doc/5111121693.html,, objFile.Size

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

对于大多数返回的集合来说,你不能控制输出信息的顺序。就是说你不能将输出的格式定义

为按照名字,按照大小或者其它别的原则。如果你想让输出的东西按照特定的格式,你就必须将他们拷贝到数组,目录或者一个disconnected recordset 然后将他们分类排列。

为了需要知道文件夹中存放的文件,你需要知道文件夹子文件夹,这样,你才能更好的了解文件夹的整体结构。文件夹对象包含了一个Subfolders 属性,用来放会在文件夹下的top-level 子文件夹的信息。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

Top-level 子文件夹是直接在文件夹下面的。在子文件夹中的子文件夹不在这个范围之内。例如,在下例中,只有Subfolder1 Subfolder2 是文件夹scripts 的top-level 的子文件夹。所以,如果用Subfolders 这个属性来返回值的话,就只是会返回Subfolder1 和Subfolder2

◎VBS脚本运行库手册之八(管理文件)2007年05月20日星期日下午08:01Managing Files 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

管理文件系统的最终任务还是归结为管理单独的文件。作为一个系统管理员,你的工作是跟踪存储在计算机上的文件。例如,你需要知道正确的诊断工具是否被复制到了server 上,你需要知道特定的文件(比如游戏文件或者音乐文件)是否被复制到了文件服务器上了,尽管你用了组策略去阻止他们将文件拷贝到文件的server。你需要知道是否有的文件放在计算机上已经有几个月没有去访问了,而这些功能通过类似知道磁盘的剩余空间这样的操作是无法知道的。此外为了跟踪这些文件,你也需要动态的管理他们:需要复制,需要移动,需要重新命名,需要删除。FSO 提供了一些方法来帮助你完成这些管理任务。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

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

FSO 给你提供了一些方法,比如CopyFile,DeleteFile 允许你的脚本不用绑定一个特定的文件就可以对文件实例进行操作。而其它的任务,就需要文件对象。比如,为了获得一些属性,你的脚本首先就需要绑定到一个文件,然后再获得文件的属性。GetFile 方法允许你绑定到一个独立的文件。为了做到这点,你先创建一个FSO 实例,然后创建一个文件对象。当你用GetFile 方法的时候,你必须:1、确定文件的路径:这个路径可以是一个本地路径,也可以是一个UNC 路径(例如:\\accounting\receivables\scriptlog.txt)在路径当中你不能用通配符也不能有多个文件。用GetFile 方法你在同一个时刻只能绑定一个单独的文件。2、当绑定的对象分配给一个变量的时候就要用到Set 这个关键词。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

例如,下面脚本绑定到了文件:C:\FSO\Scriptlog.txt

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 objFSO.GetFile("C:\FSO\ScriptLog.txt")

一般来讲,你最好用绝对路径来作GetFile 的参数。这样确保脚本总是可以在文件中运行。

但是,用相对路径也是可以的。例如,如下的脚本代码会绑定到Scriptlog.txt 会成功,因为脚本和这个文件在同一个文件夹里面:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

objFSO.GetFile("ScriptLog.txt")

同样,下面的代码实例如果这个脚本和这个文件在同一个文件夹也会绑定到Scriptlog.txt:作者:临汾市外事旅游局薛靖澜,转载请注明出处]

objFSO.GetFile(".\ScriptLog.txt")

注意:FSO 不会用路径环境信息去搜索文件。例如,你可以在命令行中敲如calc.exe 来打开计算机,而无论你当前的目录是在哪里,因为操作系统默认的情况下去搜索所有的文件的。但是用这个GetFile方法的时候,它不是这样的工作的。

如下脚本除非是在文件夹C:\Windows\System32 的文件夹下,否则都不会运行成功的。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

objFSO.GetFile("calc.exe")

有时知道文件是否存在是十分重要的,这个可以作为软件清单的一部分。例如你或许希望检查所有的邮件服务器来看特定的脚本是否存在。用脚本来实现系统管理任务来说,知道脚本存在与否很重要的。比如你或许希望当你复制、移动、删除或者操作不存在的文件的时候,脚本报错。为了避免出现错误,你可以用FileExists方法来检查文件是否存在。FileExists 方法要求一个单独的参数:文件的路径,然后返回一个特定的Boolean 值:如果文件存在,返回的是True,如果文件不存在,返回的是False。

如下面脚本用FileExists 方法来检查文件C:\FSO\Scriptlog.txt 是否存在,如果存在,用GetFile 方法来绑定到这个文件,如果不存在,脚本回显一个message“file does not exist”

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 If objFSO.FileExists("C:\FSO\ScriptLog.txt") Then

3 Set objFile = objFSO.GetFile("C:\FSO\ScriptLog.txt")

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

5 Wscript.Echo "File does not exist.?

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

你不能用通配符来检查文件夹中特定类型的文件是否存在,你也不能用通配符拉来检查文件夹中所有的文件。如下面脚本,无论在文件夹C:\FSO\下存在多少文件,都不会报错出来,而是总是返回一个False. 作者:临汾市外事旅游局薛靖澜,转载请注明出处]

WScript.Echo objFSO.FileExists("C:\FSO\*.*")

如果你希望遵循一些条件原则检查一些文件而不是基于路径,你有下面两个选择:

1、用GetFolder 对象来绑定一个文件夹,然后返回文件的属性,这样重复操作直到筛选出你感兴趣的。例如,你可以列举出所有的文件和文件的扩展名,然后跟踪看有多少个后缀名为.doc 的文件。

2、用WMI,它允许你创建更多的目标查询。比如选出所有后缀名为.doc 的文件。你可以用计数的办法来返回你要的特定的条目。如果数值是0,那么,最少有一个是.doc 的文件。

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

用FSO 来创建脚本删除文件让你可以自动执行类似与磁盘清理之类的操作。例如,你可以用脚本定期查询和删除所有的临时文件。你也可以依照一些规则来删除文件,比如删除六个月都没有被访问的文件,或者特定的后缀名的文件,比如(.bmp 或者.mp3)你可以首先创建FSO 对象实例,然后调用DeleteFile 方法来删除文件,输入文件路径作为参数。作者:临汾市外事旅游局薛靖澜,转载请注明出处]

如下面脚本删除了文件C:\FSO\Scriptlog.txt

1 Set objFSO = CreateObject("Scripting.FileSystemObject")

2 objFSO.DeleteFile("C:\FSO\ScriptLog.txt")

默认的情况下,DeleteFile 方法不会删除只读文件。事实上,当你尝试删除一个只读文件时,脚本会报错出来。为了避免这样的错误出现,如想删除只读文件的话,需添加强制参数,当强制参数设成True 的时候,那么DeleteFile 可以删除任何文件。如下面这行代码可以删除文件Scriptlog.txt,即使它只是一个只读文件。

1、objFSO.DeleteFile("C:\FSO\ScriptLog.txt", True)

2、Deleting a Set of Files

有时候你希望删除特定的、单独的文件。更有可能的是你可能想用脚本来删除一系列的文件。如在周末你或许想删除一些存盘了的日志文件或所有的临时文件。你可以通过通配符来删除一个文件夹之内的一些文件。但是你不能用DeleteFile 方法来直接删除多个文件夹内部的文件。你可以通过用筛选每个数据夹的办法来逐个删除每个文件夹内部的文件。如果你想删除多个文件夹内部的特定类型的文件(比如删除计算机上全部的.TMP 文件)你应该用WMI 而不是用FSO。为了删除一系列文件,调用DeleteFile 方法,根据文件的名字或者后缀名添加通配符来提供文件夹的路径。例如,下面的代码用来删除文件夹C:\FSO 文件夹下的所有后缀名为.doc 的文件。

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代码片断大全[一] 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.360docs.net/doc/5111121693.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脚本

几个超有价值的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

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脚本编程简明教程

第一章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!好了,我们开始吧。 打开你的“记事本”程序,在编辑窗口填写:

VBS脚本运行库手册

◎感谢钱峰2007年05月13日星期日下午04:26学习Vbs,当然是看微软网站上推出的官方教程比较原汁原味,可惜中国vbs学友里看过的恐怕不多,原因很简单,微软的官方原著是英文版的,看起来很费力。 当时,我刚刚发现vbs的妙处,可是除了一本微软的《Microsoft Windows脚本技术.CHM》之外,什么学习资料也找不到,看到网上介绍有一本《windows2000脚本编程实用大全》的书,就跑到各个书店去订书,因为出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,希望那位有电子版给我发一份,我愿意用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。 后来偶然在网络上遇到钱峰先生,慷慨赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,多次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示衷心的感谢! 今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。 有英文好的朋友可能会发觉这份翻印的教程与微软官方原版并不是完全相同,一是因为钱峰先生翻译的时候大约并没有想到要出版或者与人交流,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,按照自己的理解修改了其中的一部分(对其中的有些地方,其实到现在我也还是弄不明白);二是因为外国人行文和思维的方式与中国人有着很大的差别,读起来颇为费力,所以我对其中一些表达方式进行了修改,删除了其中一些我认为无关紧要的东西。各位学友如发现其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:https://www.360docs.net/doc/5111121693.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.360docs.net/doc/5111121693.html, https://www.360docs.net/doc/5111121693.html,=fso.GetFileName(Spath) fs.Copyfso.GetParentFolderName(Spath)&"\",True https://www.360docs.net/doc/5111121693.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脚本编写速学指南

VBS脚本编写及修改指导 -------------------------------------------------------------------------- Copyright (C), Raisecom Technology Co., Ltd . -------------------------------------------------------------------------- 版本 : 0.0.0.1 作者 : 李珊 完成日期 : 07 May 2009 -------------------------------------------------------------------------- 历史修改记录: -------------------------------------------------------------------------- 1. VBS语法总结 1) VBScript运算符优先级别

表达式由常量、变量、运算符、函数和圆括号按一定的规则组成,通过运算后有一个结果,运算结果的类型由数据和运算符共同决定。 2) VBScript控制语句总结 1、选择语句

1.1 单分支选择语句 If 条件Then 语句End If 1.2 双分支选择语句 If 条件 Then 语句1 Else 语句2 End If 1.3 多分支选择语句1 If 条件1 Then 语句1 ElseIf 条件2 Then 语句2 ElseIf 条件3 Then 语句3 ... Else 语句n End If [范例]: If length=1 Then a = "000" & a ElseIf length=2 Then a = "00" & a ElseIf length=3 Then a = "0" & a End If 1.4 多分支选择语句2

最新最全的VBS脚本应用超级范例大全

可以显示农历的VBS代码: