#Include once "windows.bi" #include "file.bi" 'benutzt API und KANN ERKENNEN, ob eine Diskette in A: ist.. 'weiß nicht mehr woher ich GetVolumeInformation() habe, aber ich freue mich drüber, also Dankeschön ;-)) #define BufLen 255 Function GetAllDrives(ShowLine As Integer=FALSE) As String Var s="", Drives="", Drive="", i=0, j=0, Serial=0, IsDriveReady=0, VName=Space(BufLen), FSName=Space(BufLen) Dim As String LwTyp(1 To 6)={"Medium unbekannt", "WechselMedium", "Festplatte", "NetzLaufwerk", "CD/DVD", "RamDisk"} Dim Buffer As String*BufLen i=GetLogicalDriveStrings(BufLen, Buffer) Drives=Left(Buffer, i) For i=0 To Len(Drives)-1 If Drives[i]=0 Then Drives[i]=32 'Leerzeichen anstatt von Chr(0)!! Next If ShowLine Then For i=0 To Len(Drives)-1 Step 4 s &=Chr(Drives[i]) &": " Next Return s EndIf For i=1 To Len(Drives) Step 4 Drive=Chr(Drives[i-1], Drives[i], Drives[i+1]) 'nur ein Test, um Mid(Drives, i, 3) zu vermeiden ;-)) IsDriveReady=GetVolumeInformation(StrPtr(Drive), StrPtr(VName), BufLen, @Serial, 0, 0, StrPtr(FSName), BufLen) j=GetDriveType(Drive) s &=" " &Chr(Drive[0]) &*IIf(IsDriveReady, @!":\t ja", @!":\t nein") &!"\t[" &LwTyp(IIF(j<2 Or j>6, 0, j)) &!"]\n" Next Return Left(s, Len(s)-1) End Function Var ShowSingle=lcase(Command(1))="-s", Eniki=InStr(lcase(Command), "-n")=0 'Ja, ICH MAG die Var-Anweisung! Select Case lcase(Command(1)) Case "-h", "-?", "/h", "/?", "--help" Print !"AlleLw.Bas\nSyntax:\nAlleLw [[-s]|[-h]] [-n]\nWobei:\n" &_ !" -s\tzeigt die Laufwerksbuchstaben(mit :) in einer Zeile..\n" &_ !" -h\t(mit seinen Varianten) undokumentiert bleibt^^\n" &_ !" -n\tverhindert den Tastendruck am Ende..\n" &_ !"Parameterangabe von '/' auf '-' umgestellt, weil's einfacher ist.."; If Eniki Then GetKey End 194 'einen ErrorLevel zurückgeben zum Erkennen, daß die Hilfe aufgerufen wurde.. End Select If ShowSingle=0 Then Print "Laufwerke von " &Environ("Computername"); Print *IIf(ShowSingle, @"", @!":\nLaufwerk bereit\tTyp\nw8 plz..\r"); GetAllDrives(ShowSingle); If Eniki Then GetKey End