VBS基础篇 - FileSystemObject对象详解

2019-01-15 19:29:16王冬梅

如上面提到的,我们可以使用下面的脚本来访问Folder对象

Dim objfso,objset '创建FileSystemObject对象 Set objfso = createobject("Scripting.FileSystemObject") '返回C:/testing的Folder的对象 Set objset = objfso.GetFolder("C:/testing")

注:通过Folder对象我们就可以访问其提供的方法及属性

Drive、DateCreated、Name属性的使用

示例:

Dim sourcepath sourcepath = "C:/testing" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) '通过Folder对象来访问Folder属性 reporter.ReportEvent micDone ,"测试Folder属性","文件夹所在的磁盘为:" & objset.Drive & " 文件夹所创建的日期:" & objset.DateCreated & " 文件夹的名字为:" & objset.Name End Sub

SubFolers属性的使用

示例:

Dim sourcepath sourcepath = "C:/Program Files/Common Files" Call FolderAttributes(sourcepath) Sub FolderAttributes(sourcepath) Dim fso,objset,objFolders,FolderName,i i = 0 Set fso = CreateObject("Scripting.FileSystemObject") '使用GetFolder方法来返回Folder对象 Set objset = fso.getFolder(sourcepath) 'SubFolders属性将返回所有子文件夹对应的Folder集合 Set objFolders = objset.SubFolders '遍历Folder集合,统计出共有多少个文件夹,及相关文件夹的名字 For Each objFolder in objFolders i = i +1 'vbcr为换行符 FolderName = FolderName + objFolder.Name + vbcr Next msgbox ("共有" & i &"个文件夹,文件夹的名字为:" & FolderName) End Sub

Files属性的使用

示例:

Dim objFso,objGetFolder,intCount,strFileName intCount = 0 '创建FileSystemObject对象 Set objFso= CreateObject("Scripting.FileSystemObject") '使用GetFolder()获得文件夹对象 Set objGetFolder = objFso.GetFolder("C:/test") '遍历Files集合并显示文件夹中所有的文件名 For Each strFile in objGetFolder.Files intCount = intCount + 1 strFileName =strFileName & "第" & intCount & "个文件夹名为:" & strFile.Name & vbcr Next msgbox strFileName

3. 以文件有关的方法及属性

用FileSystemObject对象来操作文件的方法:

表7 与文件有关的方法及说明

方法

说明

CopyFile(source,destination,overwrite)

将 source(可包含通配符)指定的一个或多个文件复制到指定的目标文件夹 destination。如果 source 包含通配符或 destination 末尾是路径分隔符(‘'),那么认为 destination 是文件夹。否则认为 destination 为一新文件的完全路径和名称。如果目标文件夹已经存在且 overwrite 参数设置为 False,将产生错误。缺省的 overwrite 参数是 True

CreateTextFile(filename,overwrite,unicode)

用指定的文件名 filename 在磁盘上创建一个新的文本文件,并返回与其对应的 TextStream 对象,如果可选的 overwrite 参数设置为 True,则覆盖同一路径下已有的同名文件。缺省的 overwrite 参数是 False。如果可选的 unicode 参数设置为 True,则该文件的内容将存储为 Unicode 文本,缺省的 unicode 参数是 False

DeleFile(filespec,force)

删除由 filespec 指定的一个或多个文件(可以在路径的最后部分包含通配符)。如果可选的 force 参数设置为 true,那么也删除具有只读属性的文件。缺省的 force 参数是False

FileExists(filespec)

如果 filespec 指定的文件存在则返回 True,否则返回 False。filespec 参数可以包含文件的绝对路径或相对路径,或者是当前文件夹中的文件名

GetBaseName(filespec)

返回 filespec 指定的文件的名称,即包含文件路径但去掉了文件的扩展名

GetExtensionName(filespec)

返回 filespec 指定的文件的扩展名

GetFile(filespec)

返回 filespec 指定的文件所对应的 File 对象。可以指定文件的相对或绝对路径

GetFileName(pathspec)

返回pathspec 指定的文件的路径或文件名,如果没有文件名就返回最后的文件夹名。不检查该文件或文件夹是否存在

GetTempName()

返回一个随机产生的文件名,用于完成运算所需的临时文件或文件夹

MoveFile(source,destination)

将 source 指定的一个或多个源文件移动到 destination 指定的目的文件夹。在 source里可以包含通配符,但 destination 不行。如果 source 包含通过配符或 destination 末尾是路径分隔符(‘'),那么认为 destination 是一文件夹。否则,认为 destination 是一新文件夹的完整路径和名称。如果目的文件夹已经存在则产生错误

OpenTextFile(filename,iomode,create,format)

创建一个名叫做 filename 的文件,或打开一个现有的名为 filename 的文件,并且返回一个与其相关的 TextStream 对象。filename 参数可以包含绝对或相对路径。iomode 参数指定了所要求的访问类型。允许的数值是 ForReading(1)(缺省)、ForWriting(2)、ForAppending(8)。当写入或追加到一个不存在的文件时,如果 create 参数设置为 true,就将创建一个新文件。缺省的 create 参数是 False。format 参数说明对文件读或写的数据格式。允许数值是:TristatetFalse(0)(缺省),按照 ASCII 格式打开;TristatetTrue(-1),按照 Unicode 格式打开;TristateDefault(-2),用系统缺省格式打开