Supportnet / Forum / Skripte(PHP,ASP,Perl...)
GetVolumeInfomation
Frage
Ich möchte den folgenden Code in einem VB-Script einsetzen, kann mir jemand dabei helfen:
Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, _
ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Long, lpVolumeSerialNumber As Long, lpMaximumComponentLength As Long, _
lpFileSystemFlags As Long, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Long) As Long
Sub test()
Dim Serial As Long, VName As String, FSName As String
Dim fs, d, dc, n
Set fs = CreateObject("Scripting.FileSystemObject")
Set dc = fs.Drives
VName = String$(11, Chr$(0))
FSName = String$(11, Chr$(0))
For Each d In dc
If d.DriveType = 1 Then
n = d.DriveLetter
GetVolumeInformation "E:\", VName, 11, Serial, 0, 0, FSName, 11
VName = Left$(VName, InStr(1, VName, Chr$(0)) - 1)
If VName = "MEINARD" Then
MsgBox n & ": ist eine Wechseldatenträger mit dem DatenträgerName: " & VName
End If
End If
Next
End Sub
Vielen Dank im Voraus.
Martin Meinard
Antwort 1 von robbie17
eine methode die alle existierenden laufwerke ausgibt
kenne ich leider nicht
aber vielleicht hilft dir dieses beispiel weiter
es gibt den status der ersten l(=10) laufwerke aus:
die methode volumename ergibt den laufzeitfehler 71
-wenn kein datenträger eingelegt ist-
das muß abgefangen werden
installier dir mal die dokumentation zum scriptinghost
da steht alles drin
ps:
das mit den variablentyp-deklarationen
kannst du bei vbskript knicken
vbs kennt nur einen universellen variablentyp
kenne ich leider nicht
aber vielleicht hilft dir dieses beispiel weiter
es gibt den status der ersten l(=10) laufwerke aus:
l=10
set fso=createobject("scripting.filesystemobject")
msg=""
for n=1 to l
if fso.driveexists(chr(64+n)) then
set d=fso.getdrive(chr(64+n))
on error resume next
name="'"&d.volumename&"'"
fehler=err.number
on error goto 0
if fehler and fehler=71 then
msg=msg+chr(64+n)+": ++no volume++"&chr(10)
else
if name="''" then name="++unlabeled++"
msg=msg+chr(64+n)+": "&name&" frei: "&d.freespace&chr(10)
end if
else
msg=msg+chr(64+n)+": existiert nicht"&chr(10)
end if
next
msgbox msg
die methode volumename ergibt den laufzeitfehler 71
-wenn kein datenträger eingelegt ist-
das muß abgefangen werden
installier dir mal die dokumentation zum scriptinghost
da steht alles drin
ps:
das mit den variablentyp-deklarationen
kannst du bei vbskript knicken
vbs kennt nur einen universellen variablentyp
Antwort 2 von robbie17
vergiß mein obiges posting
das hier dürfte das enthalten was du suchst:
irgendwie ist die dokumentation
die ich dir gerade empfohlen habe
nicht besonders übersichtlich :)
das hier dürfte das enthalten was du suchst:
a=array("Unbekanntes Laufwerk","Wechselmedium","Festplatte","Netzlaufwerk","CD-ROM","RAM-Laufwerk")
set fso=createobject("scripting.filesystemobject")
set d=fso.drives
msg=""
for each dd in d
l=dd.driveletter
t=dd.drivetype
if not dd.isready then
n="++no volume++"
else
n="'"&dd.volumename&"'"
if n="''" then n="++unlabeled++"
end if
msg=msg&l&" ("&a(t)&"): "&n&chr(10)
next
msgbox msg
irgendwie ist die dokumentation
die ich dir gerade empfohlen habe
nicht besonders übersichtlich :)

