手机
当前位置:查字典教程网 >脚本专栏 >vbs >FileSystemObject 示例代码
FileSystemObject 示例代码
摘要:在本节描述的示例代码,提供真实的例子来示范在FileSystemObject对象模式中可用的许多功能。该代码显示了如何一起使用对象模式的所有...

在本节描述的示例代码,提供真实的例子来示范在FileSystemObject对象模式中可用的许多功能。该代码显示了如何一起使用对象模式的所有功能,以及如何在您自己的代码中有效地使用这些功能。

请注意,由于该代码是极一般的,所以要使该代码能够真正在您的机器上运行,可能需要一些其他代码和小小的变更。这些改变之所以必要,是因为在ActiveServerPages和WindowsScriptingHost之间,为输入和输出给用户采用了不同的方法。

要在ActiveServerPages上运行该代码,则采取以下步骤:

创建一个标准的Web页,后缀名为.asp。

把下面的示例代码复制到<BODY>...</BODY>标记之间的文件中。

把所有代码包装器到<%...%>标记内。

把OptionExplicit语句从当前位置移动到HTML页的最顶部,甚至在<HTML>开始标记前。

把<%...%>标记放置在OptionExplicit语句周围,以保证它在服务器端运行。

把下面的代码添加到示例代码末尾:

SubPrint(x)

Response.Write"<PRE><FONTFACE=""宋体""SIZE=""1"">"

Response.Writex

Response.Write"</FONT></PRE>"

EndSub

Main

前面的代码增加一个将在服务器端运行,但在客户端显示结果的打印过程。要在WindowsScriptingHost上运行该代码,则把下面的代码添加到示例代码的末尾:

SubPrint(x)

WScript.Echox

EndSub

Main

下面就是示例代码:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'FileSystemObject示例代码

'Copyright1998MicrosoftCorporation。保留所有权利。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''OptionExplicit''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''

'对于代码质量:

'1)下面的代码有许多字符串操作,用"&"运算符来把短字符串连接在一起。由于

'字符串连接是费时的,所以这是一种低效率的写代码方法。无论如何,它是

'一种非常好维护的写代码方法,并且在这儿使用了这种方法,因为该程序执行

'大量的磁盘操作,而磁盘操作比连接字符串所需的内存操作要慢得多。

'记住这是示范代码,而不是产品代码。

'

'2)使用了"OptionExplicit",因为访问声明过的变量,比访问未声明的变量要

'稍微快一些。它还能阻止在代码中发生错误,例如,把DriveTypeCDROM误拼

'成了DriveTypeCDORM。

'

'3)为了使代码更可读,该代码中没有错误处理。虽然采取了防范措施,来保证代码

'在普通情况下没有错误,但文件系统是不可预知的。在产品代码中,使用

'OnErrorResumeNext和Err对象来捕获可能发生的错误。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'一些容易取得的全局变量

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

DimTabStop

DimNewLineConstTestDrive="C"

ConstTestFilePath="C:Test"'''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''

'由Drive.DriveType返回的常数

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

ConstDriveTypeRemovable=1

ConstDriveTypeFixed=2

ConstDriveTypeNetwork=3

ConstDriveTypeCDROM=4

ConstDriveTypeRAMDisk=5''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''

'由File.Attributes返回的常数

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

ConstFileAttrNormal=0

ConstFileAttrReadOnly=1

ConstFileAttrHidden=2

ConstFileAttrSystem=4

ConstFileAttrVolume=8

ConstFileAttrDirectory=16

ConstFileAttrArchive=32

ConstFileAttrAlias=64

ConstFileAttrCompressed=128''''''''''''''''''''''''''''''''''''''

''''''''''''''''''''''''''''''''''

'用来打开文件的常数

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

ConstOpenFileForReading=1

ConstOpenFileForWriting=2

ConstOpenFileForAppending=8'''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''

'ShowDriveType

'目的:

'生成一个字符串,来描述给定Drive对象的驱动器类型。

'示范下面的内容

'-Drive.DriveType

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

FunctionShowDriveType(Drive)DimS

SelectCaseDrive.DriveType

CaseDriveTypeRemovable

S="Removable"

CaseDriveTypeFixed

S="Fixed"

CaseDriveTypeNetwork

S="Network"

CaseDriveTypeCDROM

S="CD-ROM"

CaseDriveTypeRAMDisk

S="RAMDisk"

CaseElse

S="Unknown"

EndSelectShowDriveType=SEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''

'ShowFileAttr

'目的:

'生成一个字符串,来描述文件或文件夹的属性。

'示范下面的内容

'-File.Attributes

'-Folder.Attributes

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''FunctionShowFileAttr(File)'File可以是文件或文件夹DimS

DimAttr

Attr=File.AttributesIfAttr=0Then

ShowFileAttr="Normal"

ExitFunction

EndIfIfAttrAndFileAttrDirectoryThenS=S&"Directory"

IfAttrAndFileAttrReadOnlyThenS=S&"Read-Only"

IfAttrAndFileAttrHiddenThenS=S&"Hidden"

IfAttrAndFileAttrSystemThenS=S&"System"

IfAttrAndFileAttrVolumeThenS=S&"Volume"

IfAttrAndFileAttrArchiveThenS=S&"Archive"

IfAttrAndFileAttrAliasThenS=S&"Alias"

IfAttrAndFileAttrCompressedThenS=S&"Compressed"ShowFileAttr=SEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''''''

'GenerateDriveInformation

'目的:

'生成一个字符串,来描述可用驱动器的当前状态。

'示范下面的内容

'-FileSystemObject.Drives

'-IteratingtheDrivescollection

'-Drives.Count

'-Drive.AvailableSpace

'-Drive.DriveLetter

'-Drive.DriveType

'-Drive.FileSystem

'-Drive.FreeSpace

'-Drive.IsReady

'-Drive.Path

'-Drive.SerialNumber

'-Drive.ShareName

'-Drive.TotalSize

'-Drive.VolumeName

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''FunctionGenerateDriveInformation(FSO)DimDrives

DimDrive

DimSSetDrives=FSO.Drives

S="Numberofdrives:"&TabStop&Drives.Count&NewLine&NewLine'构造报告的第一行。

S=S&String(2,TabStop)&"Drive"

S=S&String(3,TabStop)&"File"

S=S&TabStop&"Total"

S=S&TabStop&"Free"

S=S&TabStop&"Available"

S=S&TabStop&"Serial"&NewLine'构造报告的第二行。

S=S&"Letter"

S=S&TabStop&"Path"

S=S&TabStop&"Type"

S=S&TabStop&"Ready?"

S=S&TabStop&"Name"

S=S&TabStop&"System"

S=S&TabStop&"Space"

S=S&TabStop&"Space"

S=S&TabStop&"Space"

S=S&TabStop&"Number"&NewLine'分隔行。

S=S&String(105,"-")&NewLineForEachDriveInDrives

S=S&Drive.DriveLetter

S=S&TabStop&Drive.Path

S=S&TabStop&ShowDriveType(Drive)

S=S&TabStop&Drive.IsReadyIfDrive.IsReadyThen

IfDriveTypeNetwork=Drive.DriveTypeThen

S=S&TabStop&Drive.ShareName

Else

S=S&TabStop&Drive.VolumeName

EndIf

S=S&TabStop&Drive.FileSystem

S=S&TabStop&Drive.TotalSize

S=S&TabStop&Drive.FreeSpace

S=S&TabStop&Drive.AvailableSpace

S=S&TabStop&Hex(Drive.SerialNumber)

EndIfS=S&NewLineNextGenerateDriveInformation=SEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''''''''

'GenerateFileInformation

'目的:

'生成一个字符串,来描述文件的当前状态。

'示范下面的内容

'-File.Path

'-File.Name

'-File.Type

'-File.DateCreated

'-File.DateLastAccessed

'-File.DateLastModified

'-File.Size

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''FunctionGenerateFileInformation(File)DimSS=NewLine&"Path:"&TabStop&File.Path

S=S&NewLine&"Name:"&TabStop&File.Name

S=S&NewLine&"Type:"&TabStop&File.Type

S=S&NewLine&"Attribs:"&TabStop&ShowFileAttr(File)

S=S&NewLine&"Created:"&TabStop&File.DateCreated

S=S&NewLine&"Accessed:"&TabStop&File.DateLastAccessed

S=S&NewLine&"Modified:"&TabStop&File.DateLastModified

S=S&NewLine&"Size"&TabStop&File.Size&NewLineGenerateFileInformation=SEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'GenerateFolderInformation

'目的:

'生成一个字符串,来描述文件夹的当前状态。

'示范下面的内容

'-Folder.Path

'-Folder.Name

'-Folder.DateCreated

'-Folder.DateLastAccessed

'-Folder.DateLastModified

'-Folder.Size

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''FunctionGenerateFolderInformation(Folder)DimSS="Path:"&TabStop&Folder.Path

S=S&NewLine&"Name:"&TabStop&Folder.Name

S=S&NewLine&"Attribs:"&TabStop&ShowFileAttr(Folder)

S=S&NewLine&"Created:"&TabStop&Folder.DateCreated

S=S&NewLine&"Accessed:"&TabStop&Folder.DateLastAccessed

S=S&NewLine&"Modified:"&TabStop&Folder.DateLastModified

S=S&NewLine&"Size:"&TabStop&Folder.Size&NewLineGenerateFolderInformation=SEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'GenerateAllFolderInformation

'目的:

'生成一个字符串,来描述一个文件夹和所有文件及子文件夹的当前状态。

'示范下面的内容

'-Folder.Path

'-Folder.SubFolders

'-Folders.Count

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''FunctionGenerateAllFolderInformation(Folder)DimS

DimSubFolders

DimSubFolder

DimFiles

DimFileS="Folder:"&TabStop&Folder.Path&NewLine&NewLine

SetFiles=Folder.FilesIf1=Files.CountThen

S=S&"Thereis1file"&NewLine

Else

S=S&"Thereare"&Files.Count&"files"&NewLine

EndIfIfFiles.Count<>0Then

ForEachFileInFiles

S=S&GenerateFileInformation(File)

Next

EndIfSetSubFolders=Folder.SubFoldersIf1=SubFolders.CountThen

S=S&NewLine&"Thereis1subfolder"&NewLine&NewLine

Else

S=S&NewLine&"Thereare"&SubFolders.Count&"subfolders"&NewLine&NewLine

EndIfIfSubFolders.Count<>0Then

ForEachSubFolderInSubFolders

S=S&GenerateFolderInformation(SubFolder)

Next

S=S&NewLine

ForEachSubFolderInSubFolders

S=S&GenerateAllFolderInformation(SubFolder)

Next

EndIfGenerateAllFolderInformation=SEndFunction'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''

'GenerateTestInformation

'目的:

'生成一个字符串,来描述C:Test文件夹和所有文件及子文件夹的当前状态。

'示范下面的内容

'-FileSystemObject.DriveExists

'-FileSystemObject.FolderExists

'-FileSystemObject.GetFolder

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''FunctionGenerateTestInformation(FSO)DimTestFolder

DimSIfNotFSO.DriveExists(TestDrive)ThenExitFunction

IfNotFSO.FolderExists(TestFilePath)ThenExitFunctionSetTestFolder=FSO.GetFolder(TestFilePath)GenerateTestInformation=GenerateAllFolderInformation(TestFolder)EndFunction'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''

'DeleteTestDirectory

'目的:

'清理test目录。

'示范下面的内容

'-FileSystemObject.GetFolder

'-FileSystemObject.DeleteFile

'-FileSystemObject.DeleteFolder

'-Folder.Delete

'-File.Delete

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''SubDeleteTestDirectory(FSO)DimTestFolder

DimSubFolder

DimFile

'有两种方法可用来删除文件:FSO.DeleteFile(TestFilePath&"BeatlesOctopusGarden.txt")SetFile=FSO.GetFile(TestFilePath&"BeatlesBathroomWindow.txt")

File.Delete'有两种方法可用来删除文件夹:

FSO.DeleteFolder(TestFilePath&"Beatles")

FSO.DeleteFile(TestFilePath&"ReadMe.txt")

SetTestFolder=FSO.GetFolder(TestFilePath)

TestFolder.DeleteEndSub'''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''

'CreateLyrics

'目的:

'在文件夹中创建两个文本文件。

'示范下面的内容

'-FileSystemObject.CreateTextFile

'-TextStream.WriteLine

'-TextStream.Write

'-TextStream.WriteBlankLines

'-TextStream.Close

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''SubCreateLyrics(Folder)DimTextStream

SetTextStream=Folder.CreateTextFile("OctopusGarden.txt")

TextStream.Write("Octopus'Garden")'请注意,该语句不添加换行到文件中。

TextStream.WriteLine("(byRingoStarr)")

TextStream.WriteBlankLines(1)

TextStream.WriteLine("I'dliketobeundertheseainanoctopus'gardenintheshade,")

TextStream.WriteLine("He'dletusin,knowswherewe'vebeen--inhisoctopus'gardenintheshade.")

TextStream.WriteBlankLines(2)

TextStream.CloseSetTextStream=Folder.CreateTextFile("BathroomWindow.txt")

TextStream.WriteLine("SheCameInThroughTheBathroomWindow(byLennon/McCartney)")

TextStream.WriteLine("")

TextStream.WriteLine("Shecameinthroughthebathroomwindowprotectedbyasilverspoon")

TextStream.WriteLine("Butnowshesucksherthumbandwandersbythebanksofherownlagoon")

TextStream.WriteBlankLines(2)

TextStream.CloseEndSub''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'GetLyrics

'目的:

'显示lyrics文件的内容。

'示范下面的内容

'-FileSystemObject.OpenTextFile

'-FileSystemObject.GetFile

'-TextStream.ReadAll

'-TextStream.Close

'-File.OpenAsTextStream

'-TextStream.AtEndOfStream

'-TextStream.ReadLine

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''FunctionGetLyrics(FSO)DimTextStream

DimS

DimFile'有多种方法可用来打开一个文本文件,和多种方法来从文件读取数据。

'这儿用了两种方法来打开文件和读取文件:SetTextStream=FSO.OpenTextFile(TestFilePath&"BeatlesOctopusGarden.txt",OpenFileForReading)

S=TextStream.ReadAll&NewLine&NewLine

TextStream.CloseSetFile=FSO.GetFile(TestFilePath&"BeatlesBathroomWindow.txt")

SetTextStream=File.OpenAsTextStream(OpenFileForReading)

DoWhileNotTextStream.AtEndOfStream

S=S&TextStream.ReadLine&NewLine

Loop

TextStream.CloseGetLyrics=S

EndFunction'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''

'BuildTestDirectory

'目的:

'创建一个目录分层结构来示范FileSystemObject。

'以这样的次序来创建分层结构:

'C:Test

'C:TestReadMe.txt

'C:TestBeatles

'C:TestBeatlesOctopusGarden.txt

'C:TestBeatlesBathroomWindow.txt

'示范下面的内容

'-FileSystemObject.DriveExists

'-FileSystemObject.FolderExists

'-FileSystemObject.CreateFolder

'-FileSystemObject.CreateTextFile

'-Folders.Add

'-Folder.CreateTextFile

'-TextStream.WriteLine

'-TextStream.Close

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''FunctionBuildTestDirectory(FSO)DimTestFolder

DimSubFolders

DimSubFolder

DimTextStream

'排除(a)驱动器不存在,或(b)要创建的目录已经存在的情况。IfNotFSO.DriveExists(TestDrive)Then

BuildTestDirectory=False

ExitFunction

EndIfIfFSO.FolderExists(TestFilePath)Then

BuildTestDirectory=False

ExitFunction

EndIfSetTestFolder=FSO.CreateFolder(TestFilePath)SetTextStream=FSO.CreateTextFile(TestFilePath&"ReadMe.txt")

TextStream.WriteLine("Mysonglyricscollection")

TextStream.CloseSetSubFolders=TestFolder.SubFolders

SetSubFolder=SubFolders.Add("Beatles")

CreateLyricsSubFolder

BuildTestDirectory=TrueEndFunction''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

''''''''

'主程序

'首先,它创建一个test目录,以及一些子文件夹和文件。

'然后,它转储有关可用磁盘驱动器和test目录的某些信息,

'最后,清除test目录及其所有内容。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''SubMainDimFSO'设立全局变量。

TabStop=Chr(9)

NewLine=Chr(10)

SetFSO=CreateObject("Scripting.FileSystemObject")IfNotBuildTestDirectory(FSO)Then

Print"Testdirectoryalreadyexistsorcannotbecreated.Cannotcontinue."

ExitSub

EndIfPrintGenerateDriveInformation(FSO)&NewLine&NewLine

PrintGenerateTestInformation(FSO)&NewLine&NewLine

PrintGetLyrics(FSO)&NewLine&NewLine

DeleteTestDirectory(FSO)EndSub

【FileSystemObject 示例代码】相关文章:

VBS 生成不重复随机数代码[0-10]

vbscript 调用WebService实现代码

VBS MD5加密算法代码

vbs病毒的简单例子源代码解析

用VBS修改IIS Metabase的代码

VBS调用Windows API函数的代码

vbs 注册表操作类代码

VBS 数字转英文代码

CreateWeb.vbs 代码

adodb.stream读文件到数组的代码

精品推荐
分类导航