2015-06-17 43 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