DriveGetDrive Skript [BITTE TESTEN]

  • Hai,

    ich brauch für den µitLight mal etwas, da ich nur eine Festplatte habe und meine Desktopsuchmaschine für ALLE Festplatten sein soll, hoffe ich das jeder der mehr als eine Festplatte hat das testet (obwohl wer nur eine hat kanns auch testen)

    Bei den Beizeichnungen sollten die Festplatten in folgender reihenfolge aussehen: z.B. "C: D: E:" halb immer hintereinander ohne Ausführungszeichen. Bei der Nummer der Festplatten sollten halb alle Festplatten angezeigt werden, bei unserem Beispiel sollte da eine einfache "3" (ohne ausführungszeichen" stehen. Bitte schreibt euer Ergebnis einfach in den Thread:

    _GetDrives
    [autoit]

    #include <Array.au3>
    $aDrive = _GetDrives()
    MsgBox(0, "Festplatten", "Sie haben " & $aDrive[0] & " Festplatte(n). Die Bezeichnung(en) sind: " & $aDrive[1])

    [/autoit] [autoit][/autoit] [autoit]

    Func _GetDrives()
    Local $aDrives, $sDrives
    $aDrives = DriveGetDrive("FIXED")
    If @error = 1 Then
    SetError(1)
    Return ""
    Else
    For $i = 1 To $aDrives[0]
    $sDrives = $sDrives & " " & StringUpper($aDrives[$i])
    Next
    Dim $aDriveTotal[2]
    $aDriveTotal[0] = $aDrives[0]
    $aDriveTotal[1] = $sDrives
    Return $aDriveTotal
    EndIf
    EndFunc ;==>_GetDrives

    [/autoit]

    2 Mal editiert, zuletzt von BurakSZ (2. Juli 2010 um 10:48)

  • So funkts sorry war ein fehler drin:

    [autoit]

    #include <Array.au3>
    $aDrive = _GetDrives()
    MsgBox(0, "Festplatten", "Sie haben " & $aDrive[0] & " Festplatte(n). Die Bezeichnung(en) sind: " & $aDrive[1])

    [/autoit][autoit][/autoit][autoit]

    Func _GetDrives()
    Local $aDrives, $sDrives
    $aDrives = DriveGetDrive("FIXED")
    If @error = 1 Then
    SetError(1)
    Return ""
    Else
    For $i = 1 To $aDrives[0]
    $sDrives = $sDrives & " " & StringUpper($aDrives[$i])
    Next
    Dim $aDriveTotal[2]
    $aDriveTotal[0] = $aDrives[0]
    $aDriveTotal[1] = $sDrives
    Return $aDriveTotal
    EndIf
    EndFunc ;==>_GetDrives

    [/autoit]

    2 Mal editiert, zuletzt von BurakSZ (2. Juli 2010 um 10:49)

  • Besser wäre der Ausdruck Datenträger, da ein CD/DVD-Rom keine Festplatte ist ;)

    [autoit]

    MsgBox(0, "Erkannte Datenträger", "Sie haben " & $aDrive[0] & " Datenträger. Die Bezeichnungen sind: " & $aDrive[1])

    [/autoit]


    MfG

  • Besser wäre der Ausdruck Datenträger, da ein CD/DVD-Rom keine Festplatte ist ;)

    [autoit]

    MsgBox(0, "Erkannte Datenträger", "Sie haben " & $aDrive[0] & " Datenträger. Die Bezeichnungen sind: " & $aDrive[1])

    [/autoit]


    MfG


    Das Skript erkennt aber gar keine CD/DVD-Rom Laufwerke ;)

  • Sorry ich wusste bis jetzt nicht, dass ich 5 Festplatten am Arbeitspc habe.

    Enstchuldige vielmals :D

  • Dann hast du entwerder DriveGetDrive auf "ALL" umgestellt oder dein AutoIt hat ne Macke oder dein PC hat ne macke oder das Programm hat Probleme mit deinen PC.

    Bei Ineluki gehts^^ Komisch ne?

  • Nee ich hab 5 physische Festplatten am Arbeitspc. Dat wusst ich bisher nicht. ^^

  • Na klar gehts. Es geht tiptop.
    Ich glaub am Montag schraub ich den PC ma auf um da diverse Komponente auszutauschen :D

  • So ist die Funktion (zumindest bei mir) doppelt so schnell:

    Spoiler anzeigen
    [autoit]

    Func _GetDrives2($type)
    Local $result="", $drives
    $drives=DriveGetDrive($type)
    For $x=1 to $drives[0]
    $result&=$drives[$x]&" "
    Next
    Dim $return[2]=[$drives[0], $result]
    $return[1]=StringUpper($return[1])
    Return $return
    EndFunc

    [/autoit]

    Beweis:

    Spoiler anzeigen
    [autoit]

    $Timer=TimerInit()
    _GetDrives()
    ConsoleWrite(TimerDiff($Timer)&@CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $Timer=TimerInit()
    _GetDrives2("FIXED")
    ConsoleWrite(TimerDiff($Timer)&@CRLF)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetDrives()
    Local $aDrives, $sDrives
    $aDrives = DriveGetDrive("FIXED")
    If @error = 1 Then
    SetError(1)
    Return ""
    Else
    For $i = 1 To $aDrives[0]
    $sDrives = $sDrives & " " & StringUpper($aDrives[$i])
    Next
    Dim $aDriveTotal[2]
    $aDriveTotal[0] = $aDrives[0]
    $aDriveTotal[1] = $sDrives
    Return $aDriveTotal
    EndIf
    EndFunc ;==>_GetDrives

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _GetDrives2($type)
    Local $result="", $drives
    $drives=DriveGetDrive($type)
    For $x=1 to $drives[0]
    $result&=$drives[$x]&" "
    Next
    Dim $return[2]=[$drives[0], $result]
    $return[1]=StringUpper($return[1])
    Return $return
    EndFunc

    [/autoit]