目录搜索
JScript 用户指南Jscript 基础编写 JScript 代码JScript 的变量JScript 的数据类型JScript 的运算符控制程序的流程JScript 函数Jscript对象创建自己的对象内部对象JScript 保留关键字高级 JScript创建高级对象递归变量范围复制、传递和比较数据使用数组特殊字符脚本问题解答条件编译条件编译变量在浏览器中显示信息使用消息框语言参考特性信息Microsoft JScript 特性 - ECMAMicrosoft JScript 特性 - 非-ECMAJScript 字母顺序的关健字列表JScript 错误JScript 运行时错误JScript 语法错误JScript 函数GetObject 函数ScriptEngine 函数ScriptEngineBuildVersion 函数ScriptEngineMajorVersion 函数ScriptEngineMinorVersion 函数JScript 方法A-Eabs 方法acos 方法anchor 方法apply 方法asin 方法atan 方法atan2 方法atEnd 方法big 方法blink 方法bold 方法call 方法ceil 方法charAt 方法charCodeAt 方法compile 方法concat 方法 (Array)concat 方法 (String)cos 方法decodeURI 方法decodeURIComponent 方法dimensions 方法encodeURI 方法encodeURIComponent 方法escape 方法eval 方法exec 方法exp 方法F-Ifixed 方法floor 方法fontcolor 方法fontsize 方法fromCharCode 方法getDate 方法getDay 方法getFullYear 方法getHours 方法getItem 方法getMilliseconds 方法getMinutes 方法getMonth 方法getSeconds 方法getTime 方法getTimezoneOffset 方法getUTCDate 方法getUTCDay 方法getUTCFullYear 方法getUTCHours 方法getUTCMilliseconds 方法getUTCMinutes 方法getUTCMonth 方法getUTCSeconds 方法getVarDate 方法getYear 方法indexOf 方法isFinite 方法isNaN 方法italics 方法item 方法J-Rjoin 方法lastIndexOf 方法lbound 方法link 方法localeCompare 方法log 方法match 方法max 方法min 方法moveFirst 方法moveNext 方法parse 方法parseFloat 方法parseInt 方法pop 方法pow 方法push 方法random 方法replace 方法reverse 方法round 方法Ssearch 方法setDate 方法setFullYear 方法setHours 方法setMilliseconds 方法setMinutes 方法setMonth 方法setSeconds 方法setTime 方法setUTCDate 方法setUTCFullYear 方法setUTCHours 方法setUTCMilliseconds 方法setUTCMinutes 方法setUTCMonth 方法setUTCSeconds 方法setYear 方法shift 方法sin 方法slice 方法 (Array)slice 方法 (String)small 方法sort 方法splice 方法split 方法sqrt 方法strike 方法sub 方法substr 方法substring 方法sup 方法T-Ztan 方法test 方法toArray 方法toDateString 方法toExponential 方法toFixed 方法toGMTString 方法toLocaleDateString 方法toLocaleLowerCase 方法toLocaleString 方法toLocaleTimeString 方法toLocaleUpperCase 方法toLowerCase 方法toPrecision 方法toString 方法toTimeString 方法toUpperCase 方法toUTCString 方法ubound 方法unescape 方法unshift 方法UTC 方法valueOf 方法JScript 对象ActiveXObject 对象Array 对象Boolean 对象Date 对象Enumerator 对象Error 对象Function 对象Global 对象Math 对象Number 对象Object 对象RegExp 对象正则表达式对象String 对象VBArray 对象JScript 运算符通用信息运算符优先级运算符总结加法赋值运算符 (+=)加法运算符 (+)赋值运算符 (=)按位“与”赋值运算符 (&=)按位“与”运算符 (&)按位左移运算符 (<<)按位“非”运算符 (~)按位“或”赋值运算符 (|=)按位“或”运算符 (|)按位右移运算符 (>>)按位“异或”赋值运算符 (^=)按位“异或”运算符 (^)逗号运算符 (比较运算符复合赋值运算符条件(三目)运算符 (?:)delete 运算符除法赋值运算符 (/=)除法运算符 (/)in 运算符递增 (++) 和递减 (--) 运算符instanceof 运算符左移赋值运算符 (<<=)逻辑“与”运算符 (&&)逻辑“非”运算符 (!)逻辑“或”运算符 (||)取余赋值运算符 (%=)取余运算符 (%)乘法赋值运算符 (*=)乘法运算符 (*)new 运算符右移赋值运算符 (>>=)减法赋值运算符 (-=)减法运算符 (-)typeof 运算符无符号右移运算符 (>>>)无符号右移赋值操作 (>>>=)void 运算符JScript 属性$1...$9 属性arguments 属性caller 属性constructor 属性description 属性E 属性global 属性hasOwnProperty 方法ignoreCase 属性index 属性Infinity 属性input 属性($_)isProptotyeOf 方法lastIndex 属性length 属性 (Array)length 属性 (Function)length 属性 (String)LN10 属性LN2 属性LOG10E 属性LOG2E 属性MAX_VALUE 属性message 属性MIN_VALUE 属性multiline 属性name 属性NaN 属性NaN 属性 (Global)NEGATIVE_INFINITY 属性number 属性PI 属性POSITIVE_INFINITY 属性propertyIsEnumerable 属性prototype 属性source 属性SQRT1_2 属性SQRT2 属性undefined 属性JScript 语句@cc_on 语句@if 语句@set 语句break 语句Comment 语句continue 语句do...while 语句for 语句for...in 语句function 语句if...else 语句Labeled 语句return 语句switch 语句this 语句throw 语句try...catch...finally 语句var 语句while 语句with 语句FileSystemObject 用户指南FileSystemObject 对象模型FileSystemObject 和 Scripting 运行时库参考的介绍FileSystemObject 对象设计 FileSystemObject处理驱动器和文件夹处理文件FileSystemObject 示例代码Scripting 运行时库参考脚本运行时方法Add 方法 (Dictionary)Add 方法 (Folders)BuildPath 方法Close 方法Copy 方法CopyFile 方法CopyFolder 方法CreateFolder 方法CreateTextFile 方法Delete 方法DeleteFile 方法DeleteFolder 方法DriveExists 方法Exists 方法FileExists 方法FolderExists 方法GetAbsolutePathName 方法GetBaseName 方法GetDrive 方法GetDriveName 方法GetExtensionName 方法GetFile 方法GetFileName 方法getFileVersion 方法GetFolder 方法GetParentFolderName 方法GetSpecialFolder 方法GetTempName 方法Items 方法Keys 方法Move 方法MoveFile 方法MoveFolder 方法OpenAsTextStream 方法OpenTextFile 方法Read 方法ReadAll 方法ReadLine 方法Remove 方法RemoveAll 方法Skip 方法SkipLine 方法Write 方法WriteBlankLines 方法WriteLine 方法脚本运行时对象Dictionary 对象Drive 对象Drives 集合File 对象Files 集合FileSystemObject 对象Folder 对象Folders 集合TextStream 对象脚本运行时属性AtEndOfLine 属性AtEndOfStream 属性Attributes 属性AvailableSpace 属性Column 属性CompareMode 属性Count 属性DateCreated 属性DateLastAccessed 属性DateLastModified 属性Drive 属性DriveLetter 属性Drives 属性DriveType 属性Files 属性FileSystem 属性FreeSpace 属性IsReady 属性IsRootFolder 属性Item 属性Key 属性Line 属性Name 属性ParentFolder 属性Path 属性RootFolder 属性SerialNumber 属性ShareName 属性ShortName 属性ShortPath 属性Size 属性SubFolders 属性TotalSize 属性Type 属性VolumeName 属性正则表达式简介正则表达式早期起源使用正则表达式正则表达式语法建立正则表达式优先权顺序普通字符特殊字符非打印字符字符匹配限定符定位符选择和编组后向引用
文字


FileSystemObject 示例代码

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

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

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

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

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

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

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

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

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

Sub Print(x)
   Response.Write "<PRE>&ltFONT FACE=""宋体"" SIZE=""1"">"
   Response.Write x
   Response.Write "</FONT></PRE>"
End Sub
Main

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

Sub Print(x)
   WScript.Echo x
End Sub
Main

下面就是示例代码:

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' FileSystemObject 示例代码
'Copyright 1998  Microsoft Corporation。   保留所有权利。 
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Option Explicit

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 对于代码质量:
' 1) 下面的代码有许多字符串操作,用"&"运算符来把短字符串连接在一起。由于
'    字符串连接是费时的,所以这是一种低效率的写代码方法。无论如何,它是
'    一种非常好维护的写代码方法,并且在这儿使用了这种方法,因为该程序执行
'    大量的磁盘操作,而磁盘操作比连接字符串所需的内存操作要慢得多。
'    记住这是示范代码,而不是产品代码。
'
' 2) 使用了 "Option Explicit",因为访问声明过的变量,比访问未声明的变量要
'    稍微快一些。它还能阻止在代码中发生错误,例如,把 DriveTypeCDROM 误拼
'    成了 DriveTypeCDORM '
' 3) 为了使代码更可读,该代码中没有错误处理。虽然采取了防范措施,来保证代码
'    在普通情况下没有错误,但文件系统是不可预知的。在产品代码中,使用
'    On Error Resume Next  Err 对象来捕获可能发生的错误。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

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

Const TestDrive = "C"
Const TestFilePath = "C:\Test"

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'  Drive.DriveType 返回的常数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const DriveTypeRemovable = 1
Const DriveTypeFixed = 2
Const DriveTypeNetwork = 3
Const DriveTypeCDROM = 4
Const DriveTypeRAMDisk = 5

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'  File.Attributes 返回的常数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const FileAttrNormal  = 0
Const FileAttrReadOnly = 1
Const FileAttrHidden = 2
Const FileAttrSystem = 4
Const FileAttrVolume = 8
Const FileAttrDirectory = 16
Const FileAttrArchive = 32 
Const FileAttrAlias = 64
Const FileAttrCompressed = 128

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 用来打开文件的常数
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Const OpenFileForReading = 1 
Const OpenFileForWriting = 2 
Const OpenFileForAppending = 8 

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowDriveType
' 目的: 
' 生成一个字符串,来描述给定 Drive 对象的驱动器类型。
' 示范下面的内容
' - Drive.DriveType
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function ShowDriveType(Drive)

   Dim S
   
   Select Case Drive.DriveType
   Case DriveTypeRemovable
      S = "Removable"
   Case DriveTypeFixed
      S = "Fixed"
   Case DriveTypeNetwork
      S = "Network"
   Case DriveTypeCDROM
      S = "CD-ROM"
   Case DriveTypeRAMDisk
      S = "RAM Disk"
   Case Else
      S = "Unknown"
   End Select

   ShowDriveType = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' ShowFileAttr
' 目的: 
' 生成一个字符串,来描述文件或文件夹的属性。
' 示范下面的内容
' - File.Attributes
' - Folder.Attributes
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function ShowFileAttr(File) ' File 可以是文件或文件夹

   Dim S
   Dim Attr
   
   Attr = File.Attributes

   If Attr = 0 Then
      ShowFileAttr = "Normal"
      Exit Function
   End If

   If Attr And FileAttrDirectory  Then S = S & "Directory "
   If Attr And FileAttrReadOnly   Then S = S & "Read-Only "
   If Attr And FileAttrHidden     Then S = S & "Hidden "
   If Attr And FileAttrSystem     Then S = S & "System "
   If Attr And FileAttrVolume     Then S = S & "Volume "
   If Attr And FileAttrArchive    Then S = S & "Archive "
   If Attr And FileAttrAlias      Then S = S & "Alias "
   If Attr And FileAttrCompressed Then S = S & "Compressed "

   ShowFileAttr = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateDriveInformation
' 目的: 
' 生成一个字符串,来描述可用驱动器的当前状态。
' 示范下面的内容
'  - FileSystemObject.Drives 
'  - Iterating the Drives collection
'  - Drives.Count
'  - Drive.AvailableSpace
'  - Drive.DriveLetter
'  - Drive.DriveType
'  - Drive.FileSystem
'  - Drive.FreeSpace
'  - Drive.IsReady
'  - Drive.Path
'  - Drive.SerialNumber
'  - Drive.ShareName
'  - Drive.TotalSize
'  - Drive.VolumeName
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateDriveInformation(FSO)

   Dim Drives
   Dim Drive
   Dim S

   Set Drives = FSO.Drives
   S = "Number of drives:" & 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, "-") & NewLine

   For Each Drive In Drives
      S = S & Drive.DriveLetter
      S = S & TabStop & Drive.Path
      S = S & TabStop & ShowDriveType(Drive)
      S = S & TabStop & Drive.IsReady

      If Drive.IsReady Then
         If DriveTypeNetwork = Drive.DriveType Then
            S = S & TabStop & Drive.ShareName 
         Else
            S = S & TabStop & Drive.VolumeName 
         End If    
         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)
      End If

      S = S & NewLine

   Next  

   GenerateDriveInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFileInformation
' 目的: 
' 生成一个字符串,来描述文件的当前状态。
' 示范下面的内容
'  - File.Path
'  - File.Name
'  - File.Type
'  - File.DateCreated
'  - File.DateLastAccessed
'  - File.DateLastModified
'  - File.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateFileInformation(File)

   Dim S

   S = 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 & NewLine

   GenerateFileInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateFolderInformation
' 目的: 
' 生成一个字符串,来描述文件夹的当前状态。
' 示范下面的内容
'  - Folder.Path
'  - Folder.Name
'  - Folder.DateCreated
'  - Folder.DateLastAccessed
'  - Folder.DateLastModified
'  - Folder.Size
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateFolderInformation(Folder)

   Dim S

   S = "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 & NewLine

   GenerateFolderInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateAllFolderInformation
' 目的: 
' 生成一个字符串,来描述一个文件夹和所有文件及子文件夹的当前状态。
' 示范下面的内容
'  - Folder.Path
'  - Folder.SubFolders
'  - Folders.Count
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateAllFolderInformation(Folder)

   Dim S
   Dim SubFolders
   Dim SubFolder
   Dim Files
   Dim File

   S = "Folder:" & TabStop & Folder.Path & NewLine & NewLine
   Set Files = Folder.Files

   If 1 = Files.Count Then
      S = S & "There is 1 file" & NewLine
   Else
      S = S & "There are " & Files.Count & " files" & NewLine
   End If

   If Files.Count <> 0 Then
      For Each File In Files
         S = S & GenerateFileInformation(File)
      Next
   End If

   Set SubFolders = Folder.SubFolders

   If 1 = SubFolders.Count Then
      S = S & NewLine & "There is 1 sub folder" & NewLine & NewLine
   Else
      S = S & NewLine & "There are " & SubFolders.Count & " sub folders" & NewLine & NewLine
   End If

   If SubFolders.Count <> 0 Then
      For Each SubFolder In SubFolders
         S = S & GenerateFolderInformation(SubFolder)
      Next
      S = S & NewLine
      For Each SubFolder In SubFolders
         S = S & GenerateAllFolderInformation(SubFolder)
      Next
   End If

   GenerateAllFolderInformation = S

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GenerateTestInformation
' 目的: 
' 生成一个字符串,来描述 C:\Test 文件夹和所有文件及子文件夹的当前状态。
' 示范下面的内容
'  - FileSystemObject.DriveExists
'  - FileSystemObject.FolderExists
'  - FileSystemObject.GetFolder
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GenerateTestInformation(FSO)

   Dim TestFolder
   Dim S

   If Not FSO.DriveExists(TestDrive) Then Exit Function
   If Not FSO.FolderExists(TestFilePath) Then Exit Function

   Set TestFolder = FSO.GetFolder(TestFilePath)

   GenerateTestInformation = GenerateAllFolderInformation(TestFolder) 

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' DeleteTestDirectory
' 目的: 
' 清理 test 目录。
' 示范下面的内容
'  - FileSystemObject.GetFolder
'  - FileSystemObject.DeleteFile
'  - FileSystemObject.DeleteFolder
'  - Folder.Delete
'  - File.Delete
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub DeleteTestDirectory(FSO)

   Dim TestFolder
   Dim SubFolder
   Dim File
   
   ' 有两种方法可用来删除文件:

   FSO.DeleteFile(TestFilePath & "\Beatles\OctopusGarden.txt")

   Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
   File.Delete   

   ' 有两种方法可用来删除文件夹:
   FSO.DeleteFolder(TestFilePath & "\Beatles")
   FSO.DeleteFile(TestFilePath & "\ReadMe.txt")
   Set TestFolder = FSO.GetFolder(TestFilePath)
   TestFolder.Delete

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' CreateLyrics
' 目的: 
' 在文件夹中创建两个文本文件。
' 示范下面的内容
'  - FileSystemObject.CreateTextFile
'  - TextStream.WriteLine
'  - TextStream.Write
'  - TextStream.WriteBlankLines
'  - TextStream.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub CreateLyrics(Folder)

   Dim TextStream
   
   Set TextStream = Folder.CreateTextFile("OctopusGarden.txt")
   
   TextStream.Write("Octopus' Garden ") ' 请注意,该语句不添加换行到文件中。
   TextStream.WriteLine("(by Ringo Starr)")
   TextStream.WriteBlankLines(1)
   TextStream.WriteLine("I'd like to be under the sea in an octopus' garden in the shade,")
   TextStream.WriteLine("He'd let us in, knows where we've been -- in his octopus' garden in the shade.")
   TextStream.WriteBlankLines(2)
   
   TextStream.Close

   Set TextStream = Folder.CreateTextFile("BathroomWindow.txt")
   TextStream.WriteLine("She Came In Through The Bathroom Window (by Lennon/McCartney)")
   TextStream.WriteLine("")
   TextStream.WriteLine("She came in through the bathroom window protected by a silver spoon")
   TextStream.WriteLine("But now she sucks her thumb and wanders by the banks of her own lagoon")
   TextStream.WriteBlankLines(2)
   TextStream.Close

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' GetLyrics
' 目的: 
' 显示 lyrics 文件的内容。
' 示范下面的内容
'  - FileSystemObject.OpenTextFile
'  - FileSystemObject.GetFile
'  - TextStream.ReadAll
'  - TextStream.Close
'  - File.OpenAsTextStream
'  - TextStream.AtEndOfStream
'  - TextStream.ReadLine
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function GetLyrics(FSO)

   Dim TextStream
   Dim S
   Dim File

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

   Set TextStream = FSO.OpenTextFile(TestFilePath & "\Beatles\OctopusGarden.txt", OpenFileForReading)
   
   S = TextStream.ReadAll & NewLine & NewLine
   TextStream.Close

   Set File = FSO.GetFile(TestFilePath & "\Beatles\BathroomWindow.txt")
   Set TextStream = File.OpenAsTextStream(OpenFileForReading)
   Do    While Not TextStream.AtEndOfStream
      S = S & TextStream.ReadLine & NewLine
   Loop
   TextStream.Close

   GetLyrics = S
   
End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' BuildTestDirectory
' 目的: 
' 创建一个目录分层结构来示范 FileSystemObject' 以这样的次序来创建分层结构:
' C:\Test
' C:\Test\ReadMe.txt
' C:\Test\Beatles
' C:\Test\Beatles\OctopusGarden.txt
' C:\Test\Beatles\BathroomWindow.txt
' 示范下面的内容
'  - FileSystemObject.DriveExists
'  - FileSystemObject.FolderExists
'  - FileSystemObject.CreateFolder
'  - FileSystemObject.CreateTextFile
'  - Folders.Add
'  - Folder.CreateTextFile
'  - TextStream.WriteLine
'  - TextStream.Close
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Function BuildTestDirectory(FSO)

   Dim TestFolder
   Dim SubFolders
   Dim SubFolder
   Dim TextStream
   ' 排除(a)驱动器不存在,或(b)要创建的目录已经存在的情况。

   If Not FSO.DriveExists(TestDrive) Then
      BuildTestDirectory = False
      Exit Function
   End If

   If FSO.FolderExists(TestFilePath) Then
      BuildTestDirectory = False
      Exit Function
   End If

   Set TestFolder = FSO.CreateFolder(TestFilePath)

   Set TextStream = FSO.CreateTextFile(TestFilePath & "\ReadMe.txt")
   TextStream.WriteLine("My song lyrics collection")
   TextStream.Close

   Set SubFolders = TestFolder.SubFolders
   Set SubFolder = SubFolders.Add("Beatles")
   CreateLyrics SubFolder   
   BuildTestDirectory = True

End Function

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 主程序
' 首先,它创建一个 test 目录,以及一些子文件夹和文件。 
' 然后,它转储有关可用磁盘驱动器和 test 目录的某些信息,
' 最后,清除 test 目录及其所有内容。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub Main

   Dim FSO

   ' 设立全局变量。
   TabStop = Chr(9)
   NewLine = Chr(10)
   
   Set FSO = CreateObject("Scripting.FileSystemObject")

   If Not BuildTestDirectory(FSO) Then 
      Print "Test directory already exists or cannot be created.  Cannot continue."
      Exit Sub
   End If

   Print GenerateDriveInformation(FSO) & NewLine & NewLine
   Print GenerateTestInformation(FSO) & NewLine & NewLine
   Print GetLyrics(FSO) & NewLine & NewLine
   DeleteTestDirectory(FSO)

End Sub
上一篇:下一篇: