5.4.2 使用驱动器
下面是使用FileSystemObject对象的简单例子,它使用DriveExists方法得到现有的驱动器字母的列表:
‘ In VBscript
Set objFSO = Server.CreateObject(“scripting.FileSystemObject”)
For intCode = 65 To 90 ‘ANSI codes for ‘A’ to ‘Z’
strLetter = Chr(intCode)
If objFSO.DriveExists(strLetter) Then
Response.Write “Found drive “ & strLetter & “:<BR>”
End If
Next
或用Jscript:
// In Jscript
var objFSO = Server.CreateObject(‘scripting.FileSystemObject’);
for (var intCode = 65; intCode <= 90; intCode++) { //ANSI codes for ‘A’ to ‘Z’
strLetter = String.formCharCode(intCode);
If (objFSO.DriveExists(strLetter))
Response.Write (‘Found drive ‘ + strLetter + “:<BR>”);
}
这两个程序段的运行结果是相同的,如图5-9所示:
因此,通过使用Drives集合里的Drive对象,可以在服务器上产生一个驱动器列表,与通过检查每个可能的驱动器字母来判别驱动器是否存在的方法相比,效率更高。我们也可以得到关于该驱动器的信息。在VBscript里,代码如下:
' In VBscript:
' create a FileSystemObject instance
Set objFSO = Server.CreateObject("scripting.FileSystemObject")
' create a Drives collection
Set colDrives = objFSO.Drives
' iterate through the Drives collection
For Each objDrive in colDrives
Response.Write "DriveLetter: <B>" & objDrive.DriveLetter & "</B> "
Response.Write "DriveType: <B>" & objDrive.DriveType
Select Case objDrive.DriveType
Case 0: Response.Write " - (Unknown)"
Case 1: Response.Write " - (Removable)"
Case 2: Response.Write " - (Fixed)"
Case 3: Response.Write " - (Network)"
Case 4: Response.Write " - (CDRom)"
Case 5: Response.Write " - (RamDisk)"
End Select
Response.Write "</B> "
If objDrive.DriveType = 3 Then
If objDrive.IsReady Then
Response.Write "Remote drive with ShareName: <B>" & objDrive.ShareName & "</B>"
Else
Response.Write "Remote drive - <B>IsReady</B> property returned_
<B>False</B><BR>"
End If
Else If objDrive.IsReady then
Response.Write "FileSystem: <B>" & objDrive.FileSystem & "</B> "
Response.Write "SerialNumber: <B>" & objDrive.SerialNumber & "</B><BR>"
Response.Write "Local drive with VolumeName: <B>" & _
objDrive.VolumeName & "</B><BR>"
Response.Write "AvailableSpace: <B>" & FormatNumber( _
objDrive.AvailableSpace / 1024, 0) & "</B> KB "
Response.Write "FreeSpace: <B>" & FormatNumber( _
objDrive.FreeSpace / 1024, 0) & "</B> KB "
Response.Write "TotalSize: <B>" & FormatNumber(_
objDrive.TotalSize / 1024, 0) & "</B> KB"
End if
Response.Write "<P>"
End if
Next
注意,不能用预定义常数Network比较驱动器的DriveType属性,因为(至少在scrrun.dll的当前版本中)在类型库中省略了Network常数,因此不再作为公用的常数使用。
在Jscript中,该程序是:
// In Jscript:
// create a FileSystemObject instance
var objFSO = Server.CreateObject('scripting.FileSystemObject');
// create a Drives collection
var colDrives = new Enumerator(objFSO.Drives);