Проверьте, подключен ли диск и активен ли
У меня есть требование в моем VBScript, чтобы убедиться, что диск сопоставлен и контактный.
Первоначально я использовал только DriveExists()
метод FileSystemObject
, но этого не хватило, так как в определенных сценариях пользователи начинают день в офисе, а затем берут свои ноутбуки в путешествие, не выключаясь; таким образом, рассматриваемый диск по-прежнему указан в качестве подключенного, но с ним нельзя связаться.
Для решения этой проблемы я создал следующую функцию, но она выглядит немного грязной из-за использования 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
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