VBS脚本运行库手册_第1页
VBS脚本运行库手册_第2页
VBS脚本运行库手册_第3页
VBS脚本运行库手册_第4页
VBS脚本运行库手册_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

◎感谢钱峰2007年05月13日星期日下午04:26学习Vbs,当然是看微软网站上推出的官方教程比较原汁原味,可惜中国vbs学友里看过的恐怕不多,原因很简单,微软的官方原著是英文版的,看起来很费力。当时,我刚刚发现vbs的妙处,可是除了一本微软的《MicrosoftWindows脚本技术.CHM》之外,什么学习资料也找不到,看到网上介绍有一本Windows2000脚本编程实用大全》的书,就跑到各个书店去订书,因为出版的时间太久了,那里都订不到,又跑到各个技术网站上去发帖,希望那位有电子版给我发一份,我愿意用其他方面的技术资料交换,结果如同石沉大海,一点消息也没有,在这里小小鄙视他们一下。后来偶然在网络上遇到钱峰先生,慷慨赠送了他翻译的微软的官方教程给我,让我迈进了vbs的大门,真是惭愧,由于计算机感染病毒,钱峰先生的邮件地址我也找不到了,只有他的一个qq号码,却从来不见他上线,多次留言,也没有见到他回应,在此对钱峰先生的翻译工作及无偿赠予表示衷心的感谢!今后一段时间,我将逐步将钱峰先生翻译的微软官方教程贴出,与大家共同温习。有英文好的朋友可能会发觉这份翻印的教程与微软官方原版并不是完全相同,一是因为钱峰先生翻译的时候大约并没有想到要出版或者与人交流,仅仅是自己学习,所以翻译的比较粗糙,我刚刚得到的时候,很多地方都看的不是很懂,在与微软英文官方教程比较后,按照自己的理解修改了其中的一部分(对其中的有些地方,其实到现在我也还是弄不明白);二是因为外国人行文和思维的方式与中国人有着很大的差别,读起来颇为费力,所以我对其中一些表达方式进行了修改,删除了其中一些我认为无关紧要的东西。各位学友如发现其中的错误请不吝指出,我会尽快修改,语意不祥的地方请参考官方网站:/technet/scriptcenter/guide/default.mspx◎VBS脚本运行库手册之一(磁盘操作)2007年05月13日星期日下午04:36文件系统管理是系统管理的一个关键性任务。WSH和VB脚本在这个领域都没有提供相关的功能。幸运的是,你可以通过scriptruntime库来管理这些关键的系统组件,比如磁盘,文件夹和文件。此外,scriptruntime库提供了从text文件读写的方法,可以用来创建dictionary和编译脚本。[作者:临汾市外事旅游局薛靖澜,转载请注明出处]两种主要的脚本语言,VB脚本语言和JS脚本语言起初的时候都是设计给客户端来编写IE的。正是因为如此,这两个脚本语言都有一些局限性。例如VB脚本和JS脚本内部都没有提供访问文件管理的一些任务,比如:复制、移动、删除文件等。这样做的目的是为了保护消费者。大多数的的网站不可能让用户通过网页去删除它们硬盘上的东西。尽管如此,脚本已经从类似的HTML的按钮之类的开始迅速的发展了。随着ASP的到来,浏览器的编写者要求在server上管理文件。而随着WSH的到来,系统管理员要求有在web浏览器外来管理文件了。作者:临汾市外事旅游局薛靖澜,转载请注明出处]为了满足这个要求,微软发布的了ScriptRuntimeLibrary。它是一个单独的DLL文件,scrrun.dll文件,用来给脚本的编写者们提供一些文件管理的能力,包括以下内容:作者:临汾市外事旅游局薛靖澜,转载请注明出处]1、获取文件系统的信息,包括获得磁盘、文件和文件夹上的信息。2、复制,移动和删除文件及文件夹3、创建和读写文本文件。除了这些功能之外,ScriptRuntimeLibrary提供了创建字典的能力。也可以用来对脚本进行编译,使脚本成为加密的。Note:这章只是讨论FileSystemObject和Dictionary的部分,对于Encode部分不作讨论,ScriptRuntimeLibrary也是windows2000的一部分,它在你安装或者升级微软的应用程序的时候也随着升级和安装了:这些应用程序有以下几个: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应用的更广泛一些。※ 如何返回磁盘信息在你管理计算机的磁盘之前,你需要知道你的计算机上实际上有多少磁盘可以使用oFSO允许你管理安装在计算机上的所有磁盘,包括移动硬盘和网络硬盘(就是只要是有盘符的就可以了)为了返回这个集合,你需要首先创建一个FSO实例,然后创建磁盘属性的对象。当这个集合返回后,你可用一个ForEach的循环来重述这个集合。作者:临汾市外事旅游局薛靖澜,转载请注明出处]例如,下面的脚本就是要返回安装在本地计算机上的磁盘集合然后返回它们的盘符:SetobjFSO=CreateObject("Scripting.FileSystemObject")SetcolDrives=objFSO.DrivesForEachobjDriveincolDrivesWscript.Echo"Driveletter:"&objDrive.DriveLetterNext◎VBS脚本运行库手册之二(磁盘操作)2007年05月13日星期日下午04:38※如何绑定指定磁盘如果你事先知道要绑定的磁盘(例如C盘或一个共享文件夹\\accounting\receivables),你可以用GetDrive的方法来直接绑定磁盘。这样你可以不用去筛选就获得特定磁盘的信息。GetDrive需要一个单独的参数:磁盘符号或者是共享文件夹的UNC路径。你可以用如下的几种格式:CC: C:\作者:临汾市外事旅游局薛靖澜,转载请注明出处]在下面的脚本中首先创建一个FSO对象,然后用GetDrive的方法来直接绑定C盘,然后回显可用的磁盘空间:SetobjDrive=objFSO.GetDrive("C:")Wscript.Echo"Availablespace:"&objDrive.AvailableSpace注意,这里没有ForEach循环,你就可以获得磁盘的属性。因为脚本是返回一个单独的磁盘对象,而不是所有对象的集合。因此也就不用筛选了。作者:临汾市外事旅游局薛靖澜,转载请注明出处]※如何列举磁盘驱动器的属性磁盘集合的作用总是用来监视和列举的。作为一个系统管理员,你需要知道计算机上的可用磁盘,也需要知道磁盘的序列号、可用空间等信息。在你获得当前磁盘的集合或者单个磁盘的时候,你就可以获得下表列出的所有属性。作者:临汾市外事旅游局薛靖澜,转载请注明出处]1、AvailableSpac 报告磁盘上可以使用的空间,单位是bytes。如果想以kb为单位返回,除以1024,如果想以M为单位返回,则除以1.048,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、RootFolde 返回磁盘根目录下的文件夹。9、SerialNumber 磁盘的生产商给磁盘分配的序列号。对于软盘和网络硬盘来说,它们的值是0。10、 ShareName——分配给网络驱动去的共享名称。11、TotalSiz报告整个的磁盘空间,单位是bytes,如果想以kb为单位,除以1024,如果想以M为单位返回,则单位为1,048,576。作者:临汾市外事旅游局薛靖澜,转载请注明出处]12、VolumeName 分配给磁盘的卷名。为了列举安装在计算机里的磁盘的属性,创建一个FSO实例,然后创建一个FSO属性的对象,用ForEach循环,来重现各个磁盘的配置。对于集合当中的每个磁盘,你可以返回一个或者的属性。如下列脚本列举出安装在计算机上所有磁盘的所有属性。SetobjFSO=CreateObject("Scripting.FileSystemObject")2SetcolDrives=objFSO.Drives3ForEachobjDriveincolDrives4Wscript.Echo"Availablespace:"&objDrive.AvailableSpace5Wscript.Echo"Driveletter:"&objDrive.DriveLetter6Wscript.Echo"Drivetype:"&objDrive.DriveType7Wscript.Echo"Filesystem:"&objDrive.FileSystem8Wscript.Echo"Isready:"&objDrive.IsReady9Wscript.Echo"Path:"&objDrive.Path10Wscript.Echo"Rootfolder:"&objDrive.RootFolder11Wscript.Echo"Serialnumber:"&objDrive.SerialNumber12Wscript.Echo"Sharename:"&objDrive.ShareName13Wscript.Echo"Totalsize:"&objDrive.TotalSize14Wscript.Echo"Volumename:"&objDrive.VolumeName15Next作者:临汾市外事旅游局薛靖澜,转载请注明出处]上述脚本有个潜在的缺点,就是如果没有软盘或者光驱里面没有光盘,会产生一个disknotready的错误出来。当磁盘没有准备好的时候用FSO来访问会有些错误的。虽然FSO可以标识那些没有准备好的磁盘,但是你访问它的一些属性的时候会报错出来,比如AvailableSpace或FreeSpace。如果磁盘没有准备好,你只可以访问如下的四个属性:DriveLetter、DriveType、IsReady、ShareName。所有尝试访问其它属性都会报错。幸运的是,IsReady属性允许你用脚本来检查一个磁盘是否准备好了。IsReady返回一个Boolean值,如果这个值是true,则磁盘准好了,你可以访问它的所有属性,否则如果这个值是false,则磁盘没有准备好,只能返回上面的四个属性了。可以对每个磁盘,用IsReady属性来保证磁盘是准备好的。如果是就返回磁盘的盘符和剩余空间,如果不是就只返回磁盘的盘符。作者:临汾市外事旅游局薛靖澜,转载请注明出处]SetobjFSO=CreateObject("Scripting.FileSystemObject")SetcolDrives=objFSO.DrivesForEachobjDriveincolDrivesIfobjDrive.IsReady=TrueThenWscript.Echo"Driveletter:"&objDrive.DriveLetterWscript.Echo"Freespace:"&objDrive.FreeSpaceElseWscript.Echo"Driveletter:"&objDrive.DriveLetterEndIfNext作者:临汾市外事旅游局薛靖澜,转载请注明出处]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:\FSOSetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")虽然通配符是不允许的,但是你可以用点来关联到当前的文件夹(.),你可以用点点(..)来绑定到父文件夹,用\绑定到根文件夹。例如如下代码语句绑定到当前的文件夹:SetobjFolder=objFSO.GetFolder(".")※检验文件夹是否存在作者:临汾市外事旅游局薛靖澜,转载请注明出处]许多的文件夹的操作包括复制、移动、删除需要特定的文件夹存在才可以对其进行操作。毕竟,脚本不能复制、移动、删除这些不存在的文件夹,如果一个脚本尝试去对一个不存在的文件夹执行类似的操作,那么会报错“pathnotfound”。为了避免这样的问题发生,你可以用FolderExists方法来在你绑定一个文件夹之前检查文件夹是否存在。FolderExists用一个简单的参数(文件夹路径)来返回一个Boolean值,如果文件夹存在,返回的值为True,否则返回的值为False。作者:临汾市外事旅游局薛靖澜,转载请注明出处]例如,下例中列出的脚本,FolderExists方法来检查文件夹C:\FSO是否存在。如果存在,脚本用GetFolder方法来绑定文件夹。如果不存在,脚本就弹出一个messagebox说:Folderdoesnotexist.SetobjFSO=CreateObject("Scripting.FileSystemObject")IfobjFSO.FolderExists("C:\FSO")ThenSetobjFolder=objFSO.GetFolder("C:\FSO")Wscript.Echo"Folderbindingcomplete.Else作者:临汾市外事旅游局薛靖澜,转载请注明出处]Wscript.Echo"Folderdoesnotexist?7EndIf※如何建立文件夹你不可能永远都使用你现有的文件系统结构,从来不去更改你的文件系统结构。而事实上,文件系统是动态的,因为需要变动,现存的文件夹可能被删除,新的文件夹可能被创建。例如,你的单位在fileservers上给用户提供空间,你需要在每个新用户来的时候创建一个新的文件夹给他。作者:临汾市外事旅游局薛靖澜,转载请注明出处]FSO给脚本编写者提供了这样的能力,可以让你通过脚本来创建文件夹。例如在上例中脚本检查特定的文件夹是否存在,如果存在,脚本用GetFolder的的方法来绑定到这个特定的文件夹,如果不存在,脚本弹出一个消息框。虽然这个方法避免了脚本的失败,但是你或许更希望在文件夹不存在的时候来创建一个文件夹,而不是简单的报告说文件夹不存在。为了做到这点,首先创建一个FSO对象实例,然后用CreateFolder方法,将文件夹的完成路径作为参数,例如,下面脚本用这个方法来创建一个新的文件夹C:\FSO1 SetobjFSO=CreateObject("Scripting.FileSystemObject")2SetobjFolder=objFSO.CreateFolder("C:\FSO")如果文件夹存在,那么会报错说”fileexists”。基于此,你需要在创建文件夹的之前检查文件对象是否存在。Note:FSO只能在本地创建文件夹。如果你想在远程的计算机上创建文件夹,你需要用到wshcontroller对象。你可以在本地创建文件夹然后用WMI来将文件夹移动到远程的计算机上。(这个文件夹只能先创建再用WMI移动,因为WMI不支持创建文件夹的方法。)作者:临汾市外事旅游局薛靖澜,转载请注明出处]※ 删除文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]当你要删除文件夹时,例如你用文件服务器存储每一个员工的数据,当这个员工离开单位时,他的文件夹将被删除。这保证了文件服务器上的磁盘空间,同样,你或许用一个脚本来创建一个文件夹来存储临时文件,当脚本执行完毕的时候,你会删除这个临时的文件。DeleteFolder方法使你可以删除文件夹和文件夹下的所有文件。DeleteFolder需要一个单独的参数:文件夹的完全路径。例如下面脚本用来删除C:\FSO和其它所有的东西。SetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFolder("C:\FSO")这个方法会立即删除所有的文件,它不会让你确认是否需要删除就将其扔到垃圾筒。作者:临汾市外事旅游局薛靖澜,转载请注明出处]※使用通配符(Wildcards)删除文件夹脚本的最大的一个优点就是作为一个管理工具,脚本操作可以同时删除许多个项目。例如你可以用脚本的一个单独的操作就可以删除所有的文件和文件夹,而不用一个一个去删除了。FSO允许你用通配符来删除一些特定的文件。例如你希望删除某文件夹下所有以s开头的文件夹,这可以用下面的命令来完成。当用类似这样的文件夹结构来运行这个的时候,那么文件夹subfolder1,subfolder2,scripts都会被删除。objFSO.DeleteFolder("C:\FSO\S*")下面这个脚本用来删除以su开头的文件夹,就是说subfolder1,subfolder2会被删除。objFSO.DeleteFolder("C:\FSO\Su*")通配符只能放在文件路径的最末尾。例如如下代码将通配符放在路径的中间,会报错:pathnotfoundobjFSO.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方法会在遇到错误时停止,即使这个脚本中包含有OnErrorResumeNext语句。例如你用脚本用来拷贝100的子文件夹,当成功拷贝三个之后,遇到一个错误。这时脚本会中止,它不去尝试剩下的97的文件夹。作者:临汾市外事旅游局薛靖澜,转载请注明出处]在下例中用CopyFolder的方法来复制文件夹C:\scripts到c:\FSO并且复写目标文件夹。注意,这个的结果不是C:\FSO\Scripts而是C:\FSO下有和C:\Scripts有同样的文件。如果你想更改文件夹叫C:\FSO\Scripts,你应该将目标文件夹改为C:\FSO\ScriptsConstOverWriteFiles=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFolder"C:\Scripts","C:\FSO",OverWriteFilesNote:因为这个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、 Sourcefolder源文件夹,可以是本地路径或者是UNC路径。2、 Destinationfolder目标文件夹,这个文件系也可是本地或者UNC路径。作者:临汾市外事旅游局薛靖澜,转载请注明出处]如果你的目标文件夹不存在,那么移动是成功的。如果目标文件夹存在,那么不成功。你不能用这个MoveFolder的方法来覆盖一个文件夹。作者:临汾市外事旅游局薛靖澜,转载请注明出处]下例脚本中,移动本地的文件夹C:\Scripts到一个共享的文件夹\\helpdesk\managementSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFolder"C:\Scripts","\\helpdesk\management"注意用MoveFolder方法当脚本失败后不能循环操作。例如,假如你的网络连接在脚本将文件从一个计算机移动到另外一个计算机完成前失败了,那么很有可能你一些文件在计算机A上,另外一些文件在计算机B上,也有可能在移动的过程中丢失一些文件。因为这个MoveFolder的方法无法让脚本恢复到以前状态。因为如此,你或许需要两个方法来完成文件在网络中的移动:CopyFolder和DeleteFolder。你可以用CopyFolder来将文件从计算机A移动到计算机B。当复制的操作结束之后,你用DeleteFolder来删除计算机A上的文件,当复制操作失败的时候,你可以确保你的文件还在你的计算机上。作者:临汾市外事旅游局薛靖澜,转载请注明出处]※重命名文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]在FSO中没有提供RenameFolder方法重新命名文件夹。但是可以用MoveFolder方法来将文件夹移动到相对同样的位置,例如假如有文件夹路径如下:作者:临汾市外事旅游局薛靖澜,转载请注明出处]C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\CurrentLogs如果你用Windows浏览器来更改文件夹的名字,那么文件夹还是它本身作者:临汾市外事旅游局薛靖澜,转载请注明出处]C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\ArchivedLogsMoveFolder的方法可以让你完成同样任务,你将C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\CurrentLogs作为源路径,将C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\ArchivedLogs作为目标路径。这样的结果和在windows浏览器中更改文件夹的名字效果是样的。作者:临汾市外事旅游局薛靖澜,转载请注明出处]例如,下例中的脚本将文件夹C:\FSO\Samples更改为C:\FSO\Scripts在脚本运行之前,Sample是C:\Scripts的文件夹,在脚本运行之后,就是C:\FSO的子文件夹了。此外Scripts(FSO下的)含有原来Sample所有的文件和子文件。作者:临汾市外事旅游局薛靖澜,转载请注明出处]SetobjFSO=CreateObject("Scripting.FileSystemObject")2objFSO.MoveFolder"C:\FSO\Samples","C:\FSO\Scripts"◎VBS脚本运行库手册之五(文件夹属性)2007年05月14日星期一下午08:52※获得文件夹属性作者:临汾市外事旅游局薛靖澜,转载请注明出处]因为文件夹是一个COM对象,它们的属性可以被获得和列举出来,为了列举详细的文件夹信息,你可以用文件夹对象,它是FSO的组件之一。文件夹对象的属性列举在了下表中。Attributes关于文件夹的属性信息。DateCreated文件夹创建的日期DateLastAccessed 用户最后访问这个文件夹的日期DateLastModified 用户最后更改文件夹属性的日期Drive 磁盘信息包括拖尾符号(比如,C:)标识文件夹所在的磁盘作者:临汾市外事旅游局薛靖澜,转载请注明出处]Files存储在这个文件夹中所有文件的信息。IsRootFolderBoolean值来表明这个文件夹是否是根文件夹Name文件夹的名字但不包括路径信息ParentFolder文件夹存放的父文件夹的名字PropertyDescriptionShortNameMS-DOS类型的文件夹的名字,遵循8.3的命名规则。ShortPathMS-DOS类型的文件夹的名字,遵循8.3的命名规则。Size 文件夹的大小,单位是bytes,包含子文件和子文件夹的大小在内。作者:临汾市外事旅游局薛靖澜,转载请注明出处]SubFolders 第一层的子文件夹。在Subfolders中的子文件夹不在此列中。作者:临汾市外事旅游局薛靖澜,转载请注明出处]Type 对于文件夹的描述※列举文件夹的属性为了得到一个文件夹的属性,一个脚本必须:创建一个FSO实例用GetFolder的方法绑定特定文件夹用Echo的方法显示属性。当你对一个文件夹的属性进行操作的时候,注意文件的属性和子文件夹的属性是以集合的形式返回的,不是单独返回一个的。此外Attributes属性返回一个属性值。作者:临汾市外事旅游局薛靖澜,转载请注明出处]SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")Wscript.Echo"Datecreated:"&objFolder.DateCreatedWscript.Echo"Datelastaccessed:"&objFolder.DateLastAccessedWscript.Echo"Datelastmodified:"&objFolder.DateLastModifiedWscript.Echo"Drive:"&objFolder.DriveWscript.Echo"Isrootfolder:"&objFolder.IsRootFolderWscript.Echo"Name:"&objFolder.NameWscript.Echo"Path:"&objFolder.PathWscript.Echo"Shortname:"&objFolder.ShortNameWscript.Echo"Shortpath:"&objFolder.ShortPathWscript.Echo"Size:"&objFolder.SizeWscript.Echo"Type:"&objFolder.Type※管理文件夹的属性作者:临汾市外事旅游局薛靖澜,转载请注明出处]文件系统支持属性的定义。就是文件夹中和文件夹名字和文件夹大小无关的信息。例如如果你在Windows浏览器中右击某个数据夹的时候,点Properties你就可以访问文件夹的属性了。FSO可以返回几个关于文件夹信息的重要属性。这些属性和相应的值,列举在下表中:作者:临汾市外事旅游局薛靖澜,转载请注明出处]Hidden2隐藏,就是在Windows浏览器中不可见System4System4Directory16 应用到所有的文件夹的标准值。所有可以被FSO访问的文件作者:临汾市外事旅游局薛靖澜,转载请注明出处]夹读有这个值,最小位16。Archive 32 存盘的属性用在备份程序中,用来决定文件是否需要备份。如果这个值enabling表示文件夹在下一次增量备份中会备份。如果是disabling表示不在下一次增量备份中备份Compressed2048表明这个文件夹是否是压缩的虽然这些看起来很简单,但是从FSO返回的数据看起来会让你感到很迷惑。例如,你返回一个文件夹的属性值,你或许会看到20,但是这个值并不是像上面一样的标准值。此外,你可能会获得一个单独的值,虽然这个文件夹有说有的属性。这种情况是,脚本并不是返回如2,4,16,32,2048这样的值,而只是返回一个2102。这是因为这些值是以位图的形式显示的。作者:临汾市外事旅游局薛靖澜,转载请注明出处]◎VBS脚本运行库手册之六(文件夹属性)2007年05月16日星期三下午08:57Note:对于属性值,它返回和存储的数据是以位图的形式的。对于位图你应该不会奇怪,比如后缀名为.bmp的图形文件WorkingwithBitmaps作者:临汾市外事旅游局薛靖澜,转载请注明出处]位图看起来就是一系列的开关。如果特定的开关是关闭的,那么这个开关的值就是0,如果是开启的,比如文件夹对象吧,它就具有上表中所列出的值。而位图的值就是这些开关的值的总和。如果你用脚本查询这个文件夹的属性,脚本就返回一个值为16.与其相反,如果有三个开关是开启的:隐藏(值是2)‘Directory(值是16),压缩(值是2048).那么这个位图的值应该是2+16+2048,或者值是2066。这个也是用脚本查询的时候返回的值。位图被设计成只是有一种办法来获取特定的值。得到值2066的方法只有一个就是压缩和隐藏。你不可能通过别的数学方法来算得这样的值。作者:临汾市外事旅游局薛靖澜,转载请注明出处]这个设计可以返回值并且决定哪个开关没有开哪个没有开。这个可以允许你来判断文件夹的哪个属性设定了。如果你得到了这个2066的值,那么它的属性就是隐藏压缩的文件夹。幸运的是,你不必去作任何单独的数字运算,你可以用逻辑与AND操作来决定哪个开关是否是on还是off。例如如下代码查询文件夹是否是隐藏的,如果是回显一个信息框:HiddenfolderIfobjFolder.AttributesAND2ThenWscript.Echo"Hiddenfolder."EndIf或者:IfobjFolder.AttributesAND16Then下列脚本先绑定文件夹C:\FSO,然后回显文件夹属性:(译者注:这个其实是挨个匹配的,所以你要是测试了两个属性,它都会显示出来的。)SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")IfobjFolder.AttributesAND2ThenWscript.Echo"Hiddenfolder."

5EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]6IfobjFolder.AttributesAND4Then7Wscript.Echo"Systemfolder."8EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]9IfobjFolder.AttributesAND16Then10Wscript.Echo"Folder."11EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]12IfobjFolder.AttributesAND32Then13Wscript.Echo"Archivebitset."14EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]15IfobjFolder.AttributesAND2048Then16Wscript.Echo"Compressedfolder."17EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]※改变文件夹属性文件夹的每个属性可以看成一个个开关,如果关于隐藏的开关是ON的,那么这个文件夹就是隐藏的,如果这个开关是OFF的,那么这个文件夹就不是隐藏的,你可以选择打开或者关掉它们,对于文件夹的属性也是如此:对于其它的开关,你可以将属性设置为开或者设置为关,你可以用脚本来控制这些开关的,最简单的控制属性开关的办法是用如下的程序:作者:临汾市外事旅游局薛靖澜,转载请注明出处]1.用GetFolder的方法来绑定到一个文件夹。检查你需要更改的值。例如你想隐藏一个文件夹,看这个文件夹是否是已经隐藏了作者临汾市外事旅游局薛靖澜,转载请注明出处]如果这个文件夹是隐藏的,用XOR操作来将开关转换成非隐藏的。如果这个文件夹不是隐藏的,注意不要用XOR,如果你用了,开关会被触发,文件夹会中止于隐藏。例如,下列脚本用AND来判断文件夹C:\FSO的隐藏属性开关是否开着。如果它是开的,脚本用XOR操作来将开关关闭来显示文件夹。SetobjFolder=objFSO.GetFolder("C:\FSO")IfobjFolder.AttributesAND2ThenobjFolder.Attributes=objFolder.AttributesXOR25 EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]除非很少的一些情况以外,文件夹用来作为单独存放文件的地方。有时候,这些文件夹是系统需要的。例如操作系统希望在特定的文件夹内找到特定的文件。在其它的一些时候,文件夹是系统管理员管理计算机的一种工具也是用户管理文件的工具。系统管理员可能希望将脚本放在叫做Scripts的文件夹,将一些trouble-shooting的工具放在叫做DiagnosticTools的文件夹。用户或许将他们预算信息放在叫做Budgets的文件夹,而将薪水的信息放在叫做Timecards的文件夹。当然,文件夹一般是限制使用的,你必须知道这个文件夹是存放的是什么文件。系统管理员需要知道是不是有个特定的脚本存在C:\Scripts文件夹中,用户需要知道是不是有个特定的窗体存在C:\Budgets的文件夹中。文件夹对象包含了一些属性可用来返回存储在文件夹内文件集合的信息,为了得到这些信息,你的脚本必须:创建一个FSO对象实例。作者:临汾市外事旅游局薛靖澜,转载请注明出处]2.用GetFolder的方法来绑定到一个适当的文件夹。3.设置一个对象reference来指向文件夹的属性用ForEach循环来列举出所有的文件和他们的属性。脚本不必去绑定到每一个单独的文件去获得文件的信息。在下列脚本中返回在文件夹C:\FSO下所有文件的信息并且回显他们的名字和大小:SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")SetcolFiles=objFolder.FilesForEachobjFileincolFilesWscript.EchoobjFile.Name,objFile.Size6Next作者:临汾市外事旅游局薛靖澜,转载请注明出处]对于大多数返回的集合来说,你不能控制输出信息的顺序。就是说你不能将输出的格式定义为按照名字,按照大小或者其它别的原则。如果你想让输出的东西按照特定的格式,你就必须将他们拷贝到数组,目录或者一个disconnectedrecordset然后将他们分类排列。为了需要知道文件夹中存放的文件,你需要知道文件夹子文件夹,这样,你才能更好的了解文件夹的整体结构。文件夹对象包含了一个Subfolders属性,用来放会在文件夹下的top-level子文件夹的信息。作者:临汾市外事旅游局薛靖澜,转载请注明出处]Top-level子文件夹是直接在文件夹下面的。在子文件夹中的子文件夹不在这个范围之内。例如,在下例中,只有Subfolder1Subfolder2是文件夹scripts的top-level的子文件夹。所以,如果用Subfolders这个属性来返回值的话,就只是会返回Subfolder1和Subfolder2◎VBS脚本运行库手册之八(管理文件)2007年05月20日星期日下午08:01ManagingFiles作者:临汾市外事旅游局薛靖澜,转载请注明出处]管理文件系统的最终任务还是归结为管理单独的文件。作为一个系统管理员,你的工作是跟踪存储在计算机上的文件。例如,你需要知道正确的诊断工具是否被复制到了server上,你需要知道特定的文件(比如游戏文件或者音乐文件)是否被复制到了文件服务器上了,尽管你用了组策略去阻止他们将文件拷贝到文件的server。你需要知道是否有的文件放在计算机上已经有几个月没有去访问了,而这些功能通过类似知道磁盘的剩余空间这样的操作是无法知道的。此外为了跟踪这些文件,你也需要动态的管理他们:需要复制,需要移动,需要重新命名,需要删除。FSO提供了一些方法来帮助你完成这些管理任务。作者:临汾市外事旅游局薛靖澜,转载请注明出处]BindingtoaFile作者:临汾市外事旅游局薛靖澜,转载请注明出处]FSO给你提供了一些方法,比如CopyFile,DeleteFile允许你的脚本不用绑定一个特定的文件就可以对文件实例进行操作。而其它的任务,就需要文件对象。比如,为了获得一些属性,你的脚本首先就需要绑定到一个文件,然后再获得文件的属性。GetFile方法允许你绑定到一个独立的文件。为了做到这点,你先创建一个FSO实例,然后创建一个文件对象。当你用GetFile方法的时候,你必须:1、确定文件的路径:这个路径可以是一个本地路径,也可以是一个UNC路径(例如:Waccounting\receivables\scriptlog.txt)在路径当中你不能用通配符也不能有多个文件。用GetFile方法你在同一个时刻只能绑定一个单独的文件。2、当绑定的对象分配给一个变量的时候就要用到Set这个关键词。作者:临汾市外事旅游局薛靖澜,转载请注明出处]例如,下面脚本绑定到了文件:C:\FSO\Scriptlog.txtSetobjFSO=CreateObject("Scripting.FileSystemObject")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“filedoesnotexist”SetobjFSO=CreateObject("Scripting.FileSystemObject")IfobjFSO.FileExists("C:\FSO\ScriptLog.txt")ThenSetobjFile=objFSO.GetFile("C:\FSO\ScriptLog.txt")Else作者:临汾市外事旅游局薛靖澜,转载请注明出处]Wscript.Echo"Filedoesnotexist.?EndIf作者:临汾市外事旅游局薛靖澜,转载请注明出处]你不能用通配符来检查文件夹中特定类型的文件是否存在,你也不能用通配符拉来检查文件夹中所有的文件。如下面脚本,无论在文件夹C:\FSO\T存在多少文件,都不会报错出来,而是总是返回一个False.作者:临汾市外事旅游局薛靖澜,转载请注明出处]WScript.EchoobjFSO.FileExists("C:\FSO\*.*")如果你希望遵循一些条件原则检查一些文件而不是基于路径,你有下面两个选择:1、用GetFolder对象来绑定一个文件夹,然后返回文件的属性,这样重复操作直到筛选出你感兴趣的。例如,你可以列举出所有的文件和文件的扩展名,然后跟踪看有多少个后缀名为.doc的文件。2、用WMI,它允许你创建更多的目标查询。比如选出所有后缀名为.doc的文件。你可以用计数的办法来返回你要的特定的条目。如果数值是0那么,最少有一个是doc的文件。DeletingaFile作者:临汾市外事旅游局薛靖澜,转载请注明出处]用FSO来创建脚本删除文件让你可以自动执行类似与磁盘清理之类的操作。例如,你可以用脚本定期查询和删除所有的临时文件。你也可以依照一些规则来删除文件,比如删除六个月都没有被访问的文件,或者特定的后缀名的文件,比如(.bmp或者.mp3)你可以首先创建FSO对象实例,然后调用DeleteFile方法来删除文件,输入文件路径作为参数。作者:临汾市外事旅游局薛靖澜,转载请注明出处]如下面脚本删除了文件C:\FSO\Scriptlog.txtSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFile("C:\FSO\ScriptLog.txt")默认的情况下,DeleteFile方法不会删除只读文件。事实上,当你尝试删除一个只读文件时,脚本会报错出来。为了避免这样的错误出现,如想删除只读文件的话,需添加强制参数,当强制参数设成True的时候,那么DeleteFile可以删除任何文件。如下面这行代码可以删除文件Scriptlog.txt,即使它只是一个只读文件。1、 objFSO.DeleteFile("C:\FSO\ScriptLog.txt",True)2、 DeletingaSetofFiles有时候你希望删除特定的、单独的文件。更有可能的是你可能想用脚本来删除一系列的文件。如在周末你或许想删除一些存盘了的日志文件或所有的临时文件。你可以通过通配符来删除一个文件夹之内的一些文件。但是你不能用DeleteFile方法来直接删除多个文件夹内部的文件。你可以通过用筛选每个数据夹的办法来逐个删除每个文件夹内部的文件。如果你想删除多个文件夹内部的特定类型的文件(比如删除计算机上全部的.TMP文件)你应该用WMI而不是用FSO。为了删除一系列文件,调用DeleteFile方法,根据文件的名字或者后缀名添加通配符来提供文件夹的路径。例如,下面的代码用来删除文件夹C:\FSO文件夹下的所有后缀名为.doc的文件。objFSO.DeleteFile("C:\FSO\*.doc")下面的这行代码用来删除所有文件名带有log的文件:objFSO.DeleteFile("C:\FSO\*log.*")正如前面提到的那样,DeleteFile方法不删除标记为只读的文件。如果你的脚本尝试去删除一个只读的文档,脚本会报错,虽然你用了OnErrorResumeNext语句。例如你想删除1000个txt文件,并且只有一个文件标记为只读了。当脚本尝试去删除这个文件的时候,会产生一个脚本运行的错误,这个DeleteFile方法中止。脚本不去尝试去删除其它的文件,虽然其它的文件不是只读的。因为这个原因,你可以用可选择的:强制参数,将它的值设置成True。当这个参数设置成True的时候,DeleteFile方法可以删除只读文件。当这个参数被设置成False的时候,就不能删除只读文件。下面脚本用来删除文件夹C:\FSO下的所有文件,为了确保删除包括只读文件在内的文件,强制参数被设置成True。并且使用了这个DeleteReadOnly常量。作者:临汾市外事旅游局薛靖澜,转载请注明出处]ConstDeleteReadOnly=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFile("C:\FSO\*.txt"),DeleteReadOnly如果你想删除所有不是只读的文件怎么办呢?在这种情况下,你可以返回一个集合,用文件属性来获得文件属性,是否为只读,如果是就不删除,否则就删除。◎VBS脚本运行库手册之九(复制和移动文件)2007年05月25日星期五上午09:50CopyingaFile作者:临汾市外事旅游局薛靖澜,转载请注明出处]拷贝文件,无论是从计算机上的一个文件夹到另外一个文件夹还是从一个计算机到另外一个计算机,都是一个非常常见的管理任务。如你希望拷贝一个监视的脚本到你所有的服务器上面来取代过去的DLL文件。CopyFile方法提供了这种任务管理的办法。CopyFile方法需要两个必备参数和一个可选的参数:1、 Source-要拷贝的文件的源文件的路径。2、 Destination—目标文件夹的路径。为了确保在目标文件夹也是同样的名字,将一个脱尾符放在文件夹的结束之前(“\”)objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\"如果你想重新命名该文件,你可以将全路径写成如下的格式:objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\NewFileName.txt"如果目标文件夹不存在,则会自动创建。3、Overwrite可选。默认情况下,CopyFile方法不能复制到目标文件夹存在的同名文件。这导致错误。比如你要更高的版本覆盖存在的文件,那么将这个参数设置成True。下面脚本拷贝文件C:\FSO\Scriptlog.txt到文件夹D:\Archive。Theoriginalfile,C:\FSO\ScriptLog.txt.Thecopiedfile,D:\Archive\ScriptLog.txt.为了保证拷贝的正常进行,即使存在D:\Archive\Scriptlog.txt,脚本将可选参数Overwrite设置成True(用常量OverWriteExisting)ConstOverwriteExisting=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\",OverwriteExisting作者:临汾市外事旅游局薛靖澜,转载请注明出处]当你确定一个目标文件夹的时候,脱尾的反斜线是十分必要的。(例如D:\Archive\)如果你的反斜线在,那么文件会被拷贝到Archive文件夹,如果反斜线不在的话,脚本的CopyFile尝试去建立一个叫做D:\Achive的文件夹。如果这个文件夹存在,那么会产生一个”PermissiondeniedError”的错误出来,拷贝的进程会失败的。这个对于只读文件来说也是错误的,虽然你可能将强制参数设置成True。如果没有反斜线,你必须先将原来的文件删除,然后再调用CopyFile方法来实现。CopyingaSetofFiles通配符提供了一种拷贝整个文件夹中所有的文件的方法。你可以用脚本复制一些具有共同参数的文件。例如下列脚本拷贝在C:\FSO中所有的txt文件到D:\Archive.ConstOverwriteExisting=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFile"C:\FSO\*.txt","D:\Archive\",OverwriteExisting在CopyFile的方法中添加通配符来拷贝文件的时候,只是拷贝当前文件夹的文件。而用CopyFolder的方法,正好相反,它也拷贝子文件夹的信息和文件。如下的脚本代码语句拷贝文件夹C:\FSO中所有的文件,而不拷贝子文件夹的信息。objFSO.CopyFile"C:\FSO\*.*","D:\Archive\"MovingaFile作者:临汾市外事旅游局薛靖澜,转载请注明出处]如你的磁盘空间很低了,你或许希望将文件移动到一个新的位置;如果你的计算机换了规则,你或许希望移动特定的诊断工具取代原来的。在其它的一些情况下,你或许不希望存在这个文件的副本,而是将它移动到一个新的位置。MoveFile方法让你将文件从一个地方移动到另外一个地方。MoveFile方法和CopyFile的方法类似,你需要创建一个FSO对象,然后调用MoveFile的方法,需要两个参数:1、 需要移动文件的完整路径2、 需要移动到的目标文件夹的路径,包括脱尾符(反斜线)下例中脚本将C:\FSO\Scriptlog.log移动到D盘的Archive文件夹作者:临汾市外事旅游局薛靖澜,转载请注明出处]SetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFile"C:\FSO\ScriptLog.log","D:\Archive\"MovingaSetofFiles你也可以用通配符来用一个操作移动多个文件。如为移动所有在文件夹FSO中以data开头的文件,你可以用以下的参数:C:\FSO\Data*.*通配符可以用来移动特定的文件。因为文件的类型一般是用后缀名来标识的。如下例中脚本移动所有的日志文件到D:\ArchiveSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFile"C:\FSO\*.log","D:\Archive\"RenamingaFile作者:临汾市外事旅游局薛靖澜,转载请注明出处]FSO并没有提供一种直接的方法来重新命名一个文件。但是和MoveFolder的方法可以重新命名文件夹一样,你也可以用MoveFile的方法来重新命名文件。为了重新命名一个文件,你可以用MoveFile的方法,但是目标文件夹应为当前的文件夹。如在下例脚本中,将Scriptlog.txt重新命名为Backuplog.txt。而在技术上是脚本实际上将C:\FSO\Scriptlog.txt移动到一个新的路径C:\FSO\Backuplog.txt,结果是将文件重新命名了。SetobjFSO=CreateObject("Scripting.FileSystemObject")2 objFSO.MoveFile"C:\FSO\ScriptLog.txt","C:\FSO\BackupLog.txt"作者:临汾市外事旅游局薛靖澜,转载请注明出处]◎VBS脚本运行库手册之十(文件的属性)2007年05月26日星期六下午02:34文件有些属性对于文件的管理来说十分重要,如属性DateLastAccssed告诉你最后打开这个文件的日期。属性Size告诉你文件有多少个bytes,系统管理员可以通过windows资源管理器或者命令行工具去访问文件的属性。虽然这些工具可以返回计算机上文件的信息,但是他们不是被设计成用来保存和操作文件属性的。此外,这些工具大多功能有限,不能使系统管理员很好的通过属性来周期性的清理磁盘或者寻找出满足特定属性的文件集合。幸运的是,你可以通过FSO来获得计算机上任何文件的详细信息。和其它的工具相比,FSO可以让你查询一个文件或者一组文件的信息。作者:临汾市外事旅游局薛靖澜,转载请注明出处]Attributes文件的位图属性。DateCreated文件的创建日期。DateLastAccessed数据的最后访问日期。DateLastModified数据的最后更改日期。Drive磁盘驱动器和托尾符(例如:C:)代表文件存在的磁盘上。Name文件的名字,不包含文件的路径ParentFolder父文件夹的名字。例如,C:\Windows\System32\Scrrun.dll的父文件夹名字是WindowsPath文件的路径,比如C:\Windows\System32\Scrrun.dllShortNameMS-DOS类型的文件名,符合8.3命名规则的。ShortPathMS-DOS-style文件名字。符合8.3命名规则的。Size文件的大小,单位是bytesType 文件类型,是在注册表区中对于此文件类型的字符串描述。作者临汾市外事旅游局薛靖澜,转载请注明出处]为了访问这些属性,你必须:1.创建一个FSO对象实例。用Echo(或者其它的处理办法)来表达出文件的属性。如下面的脚本用GetFile的方法来绑定到文件C:\Windows\System32\Scrrun.dll然后返回一些它的属性:SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFile=objFSO.GetFile("c:\windows\system32\scrrun.dll")Wscript.Echo"Datecreated:"&objFile.DateCreatedWscript.Echo"Datelastaccessed:"&objFile.DateLastAccessedWscript.Echo"Datelastmodified:"&objFile.DateLastModifiedWscript.Echo"Drive:"&objFile.DriveWscript.Echo"Name:"&objFile.NameWscript.Echo"Parentfolder:"&objFile.ParentFolderWscript.Echo"Path:"&objFile.PathWscript.Echo"Shortname:"&objFile.ShortNameWscript.Echo"Shortpath:"&objFile.ShortPathWscript.Echo"Size:"&objFile.SizeWscript.Echo"Type:"&objFile.Type文件为只读。True。??Normal0和文件夹一样,文件有些属性可以通过FSO返回和配置,有些属性比如位图属性就不能通过FSO文件为只读。True。??Normal0Read-onlyHidden文件在Windows浏览器中是隐藏的。Hidden文件在Windows浏览器中是隐藏的。System文件是操作系统必须的。Alias64此文件是其它文件的快捷方式Compressed2048此文件是压缩的。想获得文件的这些属性,用GetFile方法来绑定一个文件,在你创建完了这个文件对象的reference之后,你可以用逻辑与操作来决定这些属性。如果没有任何属性被设置了,那么这个值就是0。如下面脚本绑定了文件C:\FSO\Scriptlog.txt然后检查每个属性并用F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论