2015-06-17 40 views
0

我的VBScript中有一个要求,用于确保驱动器映射和可联系。检查驱动器是否映射并激活

起初,我只用了FileSystemObjectDriveExists()方法,但这种下跌短,在某些情况下用户开始新的一天在办公室,但随后把他们的巡演的笔记本电脑,而无需关闭;因此所讨论的驱动器仍被列为映射,但不可联系。

为了解决这个问题,我创建了下面的函数,但由于使用了On Error Resume Next,所以看起来有点脏。

所以我的问题是这样的;有没有一种方法可以实现我的VBS目标,或者我的方法(或类似方法)是唯一可行的方法?

Function CheckDriveExists(drive) 

    CheckDriveExists = false 

    If FSO.DriveExists(drive) Then ' A drive is mapped for the required 'drive' 

     '** Create a file name for the test file *' 
     Dim tfDate, tfName 
     tfDate = Year(Now) & Month(Now) & Day(Now) & Hour(Now) & Minute(Now) & Second(Now) 
     tfName = "tstfile-" & tfDate & ".bucf" 

     '** Try to create and then delete a file on the usrs backup drive *' 
     On Error Resume Next 
     FSO.CreateTextFile(drive & ":\" & tfName) 
     FSO.DeleteFile(drive & ":\" & tfName) 

     CheckDriveExists = (Err.Number = 0) ' Check to see if the file was created and deleted successfully 
     Err.Clear       ' Clear any possible error    
     On Error GoTo 0      ' Reset error handling 

    End If 

End Function 
+0

创建文本文件,恕我直言,不是好办法。也许你没有足够的权限来写入,特别是根文件夹。抱歉,我没有其他建议。关于错误结果下一步是一个很好的实践。 – Zam

+0

关于没有许可的好处。在这种情况下,它不应该是一个问题,但值得注意的是未来。 –

回答

1

从Windows脚本文件

Function ShowDriveList 
    Dim fso, d, dc, s, n 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set dc = fso.Drives 
    For Each d in dc 
     n = "" 
     s = s & d.DriveLetter & " - " 
     If d.DriveType = 3 Then 
     n = d.ShareName 
     ElseIf d.IsReady Then 
     n = d.VolumeName 
     Else 
     n = "[Drive not ready]" 
     End If 
     s = s & n & "<BR>" 
    Next 
    ShowDriveList = s 
End Function 

或许你还需要

Function ShowDriveType(drvpath) 
    Dim fso, d, t 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set d = fso.GetDrive(drvpath) 
    Select Case d.DriveType 
     Case 0: t = "Unknown" 
     Case 1: t = "Removable" 
     Case 2: t = "Fixed" 
     Case 3: t = "Network" 
     Case 4: t = "CD-ROM" 
     Case 5: t = "RAM Disk" 
    End Select 
    ShowDriveType = "Drive " & d.DriveLetter & ": - " & t 
End Function