该【VBS脚本运行库手册 】是由【PIKAQIU】上传分享,文档一共【55】页,该文档可以免费在线阅读,需要了解更多关于【VBS脚本运行库手册 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。◎感谢钱峰2023年05月13日星期日下午04:26学习Vbs,固然是看微软网站上推出的官方教程比较原汁原味,惋惜中国vbs学友里看过的生怕不多,缘由很简洁,微软的官方原著是英文版的,看起来很费力。
当时,我刚刚觉察vbs的妙处,可是除了一本微软的《》之外,什么学习资料也找不到,看到网上介绍有一本《windows2023脚本编程有用大全》的书,就跑到各个书店去订书,由于出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,期望那位有电子版给我发一份,我情愿用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。
后来偶然在网络上遇到钱峰先生,大方赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,屡次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示诚意的感谢!
今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。
有英文好的朋友可能会觉察这份翻印的教程与微软官方原版并不是完全一样,一是由于钱峰先生翻译的时候大约并没有想到要出版或者与人沟通,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,依据自己的理解修改了其中的一局部〔对其中的有些地方,其实到现在我也还是弄不明白〕;二是由于外国人行文和思维的方式与中国人有着很大的差异,读起来颇为费力,所以我对其中一些表达方式进展了修改,删除了其中一些我认为无关紧要的东西。各位学友如觉察其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:://microsoft/technet/scriptcenter/guide/
◎VBS脚本运行库手册之一〔磁盘操作〕2023年05月13日星期日下午04:36文件系统治理是系统治理的一个关键性任务。WSH和VB脚本在这个领域都没有供给相关的功能。幸运的是,你可以通过scriptruntime库来治理这些关键的系统组件,比方磁盘,文件夹和文件。此外,scriptruntime库供给了从text文件读写的方法,可以用来创立dictionary和编译脚本。[临汾市外事旅游局薛靖澜,转载请注明出处]
两种主要的脚本语言,VB脚本语言和JS脚本语言起初的时候都是设计给客户端来编写IE的。正是由于如此,这两个脚本语言都有一些局限性。例如VB脚本和JS脚本内部都没有供给访问文件治理的一些任务,比方:复制、移动、删除文件等。这样做的目的是为了保护消费者。大多数的的网站不行能让用户通过网页去删除它们硬盘上的东西。尽管如此,脚本已经从类似的HTML的按钮之类的开头快速的进展了。随着ASP的到来,扫瞄器的编写者要求在server上治理文件。而随着WSH的到来,系统治理员要求有在web扫瞄器外来治理文件了。临汾市外事旅游局薛靖澜,转载请注明出处]
为了满足这个要求,微软公布的了 ScriptRuntimeLibrary。它是一个单独的DLL文件,,用来给脚本的编写者们供给一些文件治理的力气,包括以下内容:
临汾市外事旅游局薛靖澜,转载请注明出处]
1、猎取文件系统的信息,包括获得磁盘、文件和文件夹上的信息。
2、复制,移动和删除文件及文件夹
3、创立和读写文本文件。
除了这些功能之外,ScriptRuntimeLibrary供给了创立字典的力气。也可以用来对脚本进展编译,使脚本成为加密的。
Note:
这章只是争论FileSystemObject和Dictionary的局部,对于Encode局部不作争论,ScriptRuntimeLibrary也是windows2023的一局部,它在你安装或者升级微软的应用程序的时候也随着升级和安装了:这些应用程序有以下几个:
1、WSH 2、VB脚本3、IE扫瞄器 4、MicrosoftOffice 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实例,然后创立磁盘属性的对象。当这个集合返回后,你可用一个ForEach的循环来重述这个集合。临汾市外事旅游局薛靖澜,转载请注明出处]
例如,下面的脚本就是要返回安装在本地计算机上的磁盘集合然后返回它们的盘符:
SetobjFSO=CreateObject(““)
SetcolDrives=
ForEachobjDriveincolDrives
“Driveletter:“&
Next
◎VBS脚本运行库手册之二〔磁盘操作〕2023年05月13日星期日下午04:38※如何绑定指定磁盘
假设你事先知道要绑定的磁盘〔例如C盘或一个共享文件夹\\accounting\receivables〕,你可以用GetDrive的方法来直接绑定磁盘。这样你可以不用去筛选就获得特定磁盘的信息。GetDrive需要一个单独的参数:磁盘符号或者是共享文件夹的UNC路径。你可以用如下的几种格式:C C: C:\临汾市外事旅游局薛靖澜,转载请注明出处]
在下面的脚本中首先创立一个FSO对象,然后用GetDrive的方法来直接绑定C盘,然后回显可用的磁盘空间:
SetobjFSO=CreateObject(““)
SetobjDrive=(“C:“)
“Availablespace:“&
留意,这里没有ForEach循环,你就可以获得磁盘的属性。由于脚本是返回一个单独的磁盘对象,而不是全部对象的集合。因此也就不用筛选了。临汾市外事旅游局薛靖澜,转载请注明出处]
※如何列举磁盘驱动器的属性
磁盘集合的作用总是用来监视和列举的。作为一个系统治理员,你需要知道计算机上的可用磁盘,也需要知道磁盘的序列号、可用空间等信息。在你获得当前磁盘的集合或者单个磁盘的时候,你就可以获得下表列出的全部属性。临汾市外事旅游局薛靖澜,转载请注明出处]
1、AvailableSpace——报告磁盘上可以使用的空间,单位是bytes。假设想以kb为单位返回,除以1024,假设想以M为单位返回,,576。这个属性返回的是可用的磁盘空间的总数。假设一个磁盘启用了磁盘限额,那么他返回的数字可能比实际的要小。
2、DriveLette——返回特定磁盘的盘符。这个盘符不包含那么冒号。例如软盘返回的是A,而不是A:
3、DriveType——整数的值代表不同的磁盘类型:1:移动硬盘2:硬盘3:网络硬盘临汾市外事旅游局薛靖澜,转载请注明出处]
4:CD-ROM5:RAM磁盘
4、FreeSpace——返回磁盘剩余空间的总额。单位是bytes,假设是返回的单位是kb,就除以1024,假设是以M为单位,除以1,048,576。留意:这个和磁盘可用空间不一样,剩余的磁盘空间不会考虑磁盘限额。临汾市外事旅游局薛靖澜,转载请注明出处]
5、FileSystem——返回文件系统的类型〔FAT,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、VolumeName——安排给磁盘的卷名。
为了列举安装在计算机里的磁盘的属性,创立一个FSO实例,然后创立一个FSO属性的对象,用ForEach循环,来重现各个磁盘的配置。对于集合当中的每个磁盘,你可以返回一个或者的属性。如以下脚本列举出安装在计算机上全部磁盘的全部属性。
SetobjFSO=CreateObject(““)
SetcolDrives=
ForEachobjDriveincolDrives
“Availablespace:“&
“Driveletter:“&
“Drivetype:“&
“Filesystem:“&
“Isready:“&
“Path:“&
“Rootfolder:“&
“Serialnumber:“&
“Sharename:“&
“Totalsize:“&
“Volumename:“&
Next临汾市外事旅游局薛靖澜,转载请注明出处]
上述脚本有个潜在的缺点,就是假设没有软盘或者光驱里面没有光盘,会产生一个disknotready的错误出来。当磁盘没有预备好的时候用FSO来访问会有些错误的。虽然FSO可以标识那些没有预备好的磁盘,但是你访问它的一些属性的时候会报错出来,比方AvailableSpace或FreeSpace。假设磁盘没有预备好,你只可以访问如下的四个属性:DriveLetter、DriveType、IsReady、ShareName。全部尝试访问其它属性都会报错。
幸运的是,IsReady属性允许你用脚原来检查一个磁盘是否预备好了。IsReady返回一个Boolean值,假设这个值是true,则磁盘准好了,你可以访问它的全部属性,否则假设这个值是false,则磁盘没有预备好,只能返回上面的四个属性了。可以对每个磁盘,用IsReady属性来保证磁盘是预备好的。假设是就返回磁盘的盘符和剩余空间,假设不是就只返回磁盘的盘符。临汾市外事旅游局薛靖澜,转载请注明出处]
SetobjFSO=CreateObject(““)
SetcolDrives=
ForEachobjDriveincolDrives
=TrueThen
“Driveletter:“&
“Freespace:“&
Else
“Driveletter:“&
EndIf
Next临汾市外事旅游局薛靖澜,转载请注明出处]
Note:这个问题不会发生在WMI上〔假设软盘或者光驱中没有盘,脚本就会失败〕,WMI只是认为返回的空间为Null
◎VBS脚本运行库手册之三〔治理文件夹〕2023年05月13日星期日下午04:40※治理文件夹
磁盘的属性比方磁盘的剩余空间,磁盘的总额供给了一个全局的信息给系统治理员。但是,对于系统治理而言,磁盘的信息虽然是必需的,但是还不够。知道文件存储在哪个盘固然重要,但是你也需要知道文件是存储在哪个文件夹下的。此外很多的系统治理任务都是发生在文件夹级别的,比方复制,移动,删除和列举文件夹的内容。
FSO可以返回一个磁盘上文件夹的全部信息。此外,FSO供给了一系列的方法来完成诸如:
复制、移动、删除文件夹的操作。
※ 如何绑定指定的文件夹
在微软的调用文件中,文件夹是COM对象。这就是说在你访问一个单独的文件夹的属性时,你必需去创立一个文件夹的对象reference,这个过程叫做绑定。你可以用FSO和GetObject的方法来绑定到一个文件夹。临汾市外事旅游局薛靖澜,转载请注明出处]
当用GetFolder的时候,你必需:路径既可以写本钱地路径也可以写成UNC路径〔例如:
\\accounting\receivables〕。但是通配符不能消灭在路径当中。此外,你不行以创立一个单独的对象reference来同时绑定到多个文件夹。例如,如下的脚本代码会产生一个错误:
(“C:\FSO“,“C:\Scripts“)
假设你想针对多个文件夹同时工作,你要么用WMI或者用针对每个文件夹创立单独的对象reference。
在设置的时候Set这个关键词是必需的,由于你要标识这个对象reference变量。临汾市外事旅游局薛靖澜,转载请注明出处]
例如下面的脚本绑定文件夹C:\FSO
SetobjFSO=CreateObject(““)
SetobjFolder=(“C:\FSO“)
虽然通配符是不允许的,但是你可以用点来关联到当前的文件夹(.),你可以用点点(..)来绑定到父文件夹,用\ 绑定到根文件夹。例如如下代码语句绑定到当前的文件夹:
SetobjFolder=(“.“)
※检验文件夹是否存在临汾市外事旅游局薛靖澜,转载请注明出处]
很多的文件夹的操作包括复制、移动、删除需要特定的文件夹存在才可以对其进展操作。毕竟,脚本不能复制、移动、删除这些不存在的文件夹,假设一个脚本尝试去对一个不存在的文件夹执行类似的操作,那么会报错“pathnotfound”。为了避开这样的问题发生,你可以用FolderExists方法来在你绑定一个文件夹之前检查文件夹是否存在。FolderExists用一个简洁的参数〔文件夹路径〕来返回一个Boolean值,假设文件夹存在,返回的值为True,否则返回的值为False。临汾市外事旅游局薛靖澜,转载请注明出处]
例如,下例中列出的脚本,FolderExists方法来检查文件夹C:\FSO是否存在。假设存在,脚本用GetFolder方法来绑定文件夹。假设不存在,脚本就弹出一个messagebox说:Folderdoesnotexist.
SetobjFSO=CreateObject(““)
(“C:\FSO“)Then
SetobjFolder=(“C:\FSO“)
“Folderbindingcomplete.“
Else临汾市外事旅游局薛靖澜,转载请注明出处]
“Folderdoesnotexist?“
EndIf
※如何建立文件夹
你不行能永久都使用你现有的文件系统构造,从来不去更改你的文件系统构造。而事实上,文件系统是动态的,由于需要变动,现存的文件夹可能被删除,的文件夹可能被创立。例如,你的单位在fileservers上给用户供给空间,你需要在每个用户来的时候创立一个的文件夹给他。临汾市外事旅游局薛靖澜,转载请注明出处]
FSO给脚本编写者供给了这样的力气,可以让你通过脚原来创立文件夹。例如在上例中脚本检查特定的文件夹是否存在,假设存在,脚本用GetFolder的的方法来绑定到这个特定的文件夹,假设不存在,脚本弹出一个消息框。虽然这个方法避开了脚本的失败,但是你或许更期望在文件夹不存在的时候来创立一个文件夹,而不是简洁的报告说文件夹不存在。为了做到这点,首先创立一个FSO对象实例,然后用CreateFolder方法,将文件夹的完成路径作为参数,例如,下面脚本用这个方法来创立一个的文件夹C:\FSO
SetobjFSO=CreateObject(““)
SetobjFolder=(“C:\FSO“)
假设文件夹存在,那么会报错说”fileexists”。基于此,你需要在创立文件夹的之前检查文件对象是否存在。
Note:FSO只能在本地创立文件夹。假设你想在远程的计算机上创立文件夹,你需要用到wshcontroller对象。你可以在本地创立文件夹然后用WMI来将文件夹移动到远程的计算机上。〔这个文件夹只能先创立再用WMI移动,由于WMI不支持创立文件夹的方法。〕临汾市外事旅游局薛靖澜,转载请注明出处]
※ 删除文件夹临汾市外事旅游局薛靖澜,转载请注明出处]
当你要删除文件夹时,例如你用文件效劳器存储每一个员工的数据,当这个员工离开单位时,他的文件夹将被删除。这保证了文件效劳器上的磁盘空间,同样,你或许用一个脚原来创立
一个文件夹来存储临时文件,当脚本执行完毕的时候,你会删除这个临时的文件。DeleteFolder方法使你可以删除文件夹和文件夹下的全部文件。DeleteFolder需要一个单独的参数:文件夹的完全路径。例如下面脚本用来删除C:\FSO和其它全部的东西。
SetobjFSO=CreateObject(““)
(“C:\FSO“)
这个方法会马上删除全部的文件,它不会让你确认是否需要删除就将其扔到垃圾筒。临汾市外事旅游局薛靖澜,转载请注明出处]
※使用通配符〔Wildcards〕删除文件夹
脚本的最大的一个优点就是作为一个治理工具,脚本操作可以同时删除很多个工程。例如你可以用脚本的一个单独的操作就可以删除全部的文件和文件夹,而不用一个一个去删除了。
FSO允许你用通配符来删除一些特定的文件。例如你期望删除某文件夹下全部以s开头的文件夹,这可以用下面的命令来完成。当用类似这样的文件夹构造来运行这个的时候,那么文件夹subfolder1,subfolder2,scripts都会被删除。
(“C:\FSO\S*“)
下面这个脚本用来删除以su开头的文件夹,就是说subfolder1,subfolder2会被删除。
(“C:\FSO\Su*“)
通配符只能放在文件路径的最末尾。
例如如下代码将通配符放在路径的中间,会报错:(“C:\*\Subfolder1“)
◎VBS脚本运行库手册之四〔治理文件夹〕2023年05月13日星期日下午04:41※复制文件夹及文件夹下的内容临汾市外事旅游局薛靖澜,转载请注明出处]
复制文件夹和文件夹当中全部数据力气的对于系统治理任务来说格外重要。有时你需要复制文件夹来创立备份,在计算机A和计算机B上有同样的文件夹,假设计算机B意外的down掉之后,你就不怕数据丧失了。在其它的时候,你或许期望将含有特定文件的文件夹复制到很多台计算机上。用脚原来向各个计算机复制这个文件夹比手工复制高效的多。临汾市外事旅游局薛靖澜,转载请注明出处]
1、CopyFolder方法允许你复制一个文件夹到另外一个地方。当不用通配符的时候,这个CopyFolder的方法和命令Xcopy/E命令一样:它拷贝全部的文件和子文件夹,包括空的文件夹。这个命令需要两个参数:源文件夹->这个文件夹可以被确定为本地路径(C:\Script)
或者为UNC路径(\\helpdesk\scripts)。目标文件夹->这个文件夹也可以是本地文件夹和UNC路径。假设目标文件夹不存在,那么将自动创立一个文件夹。此外这个方法有个可选的参数:Overwrite,当这个参数存在时,默认的状况下脚本会掩盖已经存在的目标文件夹。
Note:CopyFolder方法会在遇到错误时停顿,即使这个脚本中包含有OnErrorResumeNext
语句。例如你用脚本用来拷贝100的子文件夹,当成功拷贝三个之后,遇到一个错误。这
时脚本会中止,它不去尝试剩下的97的文件夹。临汾市外事旅游局薛靖澜,转载请注明出处]
在下例中用CopyFolder的方法来复制文件夹C:\scripts到c:\FSO并且复写目标文件夹。留意,这个的结果不是C:\FSO\Scripts而是C:\FSO下有和C:\Scripts有同样的文件。假设你想更改文件夹叫C:\FSO\Scripts,你应当将目标文件夹改为C:\FSO\Scripts
ConstOverWriteFiles=True
SetobjFSO=CreateObject(““)
“C:\Scripts“,“C:\FSO“,OverWriteFiles
Note:由于这个CopyFolder是一个单独的操作,你没有方法来跟踪它的进程。你只是需要简洁的等待操作的完毕。假设你想监视copy命令的过程,你应当用shell应用程序。
※使用通配符〔Wildcards〕复制文件夹
用这个CopyFolder命令也可以拷贝全部文件夹和子文件夹下的文件。这样可能导致一个问题,如果只是想拷贝C:\FSO下的文件,而不是想拷贝C:\FSO\Subfolder1,C:\FSO\Subfolder2,C:\FSO\Sbufolder3下的文件。临汾市外事旅游局薛靖澜,转载请注明出处]
可是,不幸的是这里没有直接的方法来不拷贝子文件夹中的文件而只是拷贝父文件夹中的文件,你可以用通配符来限制子文件夹的拷贝。例如如下的脚本代码只是拷贝以log字母开头的文件夹。但是,你用通配符的时候就只是拷贝那些符合特定要求的文件夹才被拷贝:
“C:\Scripts\Log*“,“C:\Archive“,True
当上面的脚本代码执行的时候,C:\Scripts\logs,C:\Scripts\Logfiles被拷贝了,包括它们的文件和子文件夹中的文件。但是,在C:\Scripts的文件没有被拷贝。当你用CopyFolder方法的时候,你不能只是拷贝文件夹中的文件,而不拷贝子文件夹中的蚊子。假设你想只是拷贝文件而不拷贝子文件夹的文件,你可以应用CopyFile方法。
※移动文件夹临汾市外事旅游局薛靖澜,转载请注明出处]
当你复制一个文件夹从一个地方到另外一个地方的时候,你以复制完毕而告终。有时候这个正是你想要的,但是有的时候,你不需要两份文件的信息,你或许期望将文件夹从计算机A
VBS脚本运行库手册 来自淘豆网m.daumloan.com转载请标明出处.