請注意,由于該代碼是極一般的,所以要使該代碼能夠真正在您的機器上運行,可能需要一些其他代碼和小小的變更。這些改變之所以必要,是因為在 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 下面就是示例代碼:
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 = SEnd 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 = SEnd 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 = SEnd 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 = SEnd 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 = SEnd 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 = SEnd 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
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.CloseEnd 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 = TrueEnd 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