Heim >Backend-Entwicklung >Golang >Wie erhalte ich mit Go eine Liste aller Laufwerke auf einem Windows-System?

Wie erhalte ich mit Go eine Liste aller Laufwerke auf einem Windows-System?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 19:43:02314Durchsuche

How to Get a Listing of All Drives on a Windows System Using Go?

Laufwerksliste unter Windows mit Go abrufen

Um automatisch nach Dateien auf allen Laufwerken eines Windows-Systems zu suchen, ist es notwendig, eine Liste abzurufen aller Laufwerke mit Go. Die Programmiersprache Go bietet Funktionen für die Interaktion mit der Windows-API und ermöglicht die Aufzählung logischer Laufwerke.

Lösung

Die Lösung besteht im Aufruf der GetLogicalDrives-Funktion aus dem Kernel32. DLL-Bibliothek. Diese Funktion gibt eine Bitmap zurück, die die verfügbaren Laufwerke angibt. Durch die Verarbeitung dieser Bitmap können wir die Laufwerksbuchstaben erhalten, die den verfügbaren Laufwerken entsprechen:

<code class="go">import (
    "fmt"
    "syscall"
)

func main() {

    kernel32, _ := syscall.LoadLibrary("kernel32.dll")
    getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives")

    var drives []string

    if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 {
        // handle error
    } else {
        drives = bitsToDrives(uint32(ret))
    }

    fmt.Printf("%v", drives)

}

func bitsToDrives(bitMap uint32) (drives []string) {
    availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}

    for i := range availableDrives {
        if bitMap&amp;1 == 1 {
            drives = append(drives, availableDrives[i])
        }
        bitMap >>= 1
    }

    return
}</code>

Die Funktion bitsToDrives wandelt die Bitmap in ein Array von Laufwerksbuchstaben um und die Hauptfunktion ruft fmt.Printf( ), um die Liste der Laufwerke auszudrucken. Mit diesem Code können Sie dynamisch nach Dateien auf allen verfügbaren Laufwerken suchen, ohne dass Benutzereingaben für Laufwerksbuchstaben erforderlich sind.

Das obige ist der detaillierte Inhalt vonWie erhalte ich mit Go eine Liste aller Laufwerke auf einem Windows-System?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn