2016-03-21 3 views
-2

Ich habe versucht, den OS-Namen in Golang zu erhalten. Der folgende Code ist mein.Fehler beim Ausführen eines Befehls in Golang

// GetOsName.go 
package main 

import (
    "fmt" 
    "os/exec" 
) 

func main() { 
    fmt.Println("systeminfo","|","findstr","/B","/C:\"OS Name\"") 
    Out,err:=exec.Command("systeminfo","|","findstr","/B","/C:\"OS Name\"").Output() 
    if err!=nil{ 
     fmt.Println("Err:",err) 
    }else{ 
     fmt.Println("Out:",string(Out)) 
    } 
} 

Aber wenn ich den Code ausführen bekomme ich diese Nachricht

systeminfo | findstr /B /C:"OS Name" 
Err: exit status 1 

Der Befehl richtig ist. Wenn ich versuche, den Befehl in separaten auszuführen, funktioniert es gut. Hilf mir, dies zu lösen Danke im Voraus.

Antwort

1

Ihr Befehl ist nicht richtig. Ihr Befehl ist Shell-Code und kann nur durch eine Shell (hier cmd.exe) ausgeführt werden. Wenn Sie den Betriebssystemnamen wirklich so erhalten möchten: Führen Sie cmd.exe mit Ihrem Befehl als Argument aus. Sie könnten systeminfo.exe ausführen und die Ausgabe in Go analysieren (anstelle der Shell).

Verwandte Themen