2016-03-21 16 views
-2

GolangでOS名を取得しようとしました。以下は私のコードです。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)) 
    } 
} 

しかし、とき、私はこのメッセージ

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

コマンドが正しい取得するコードを実行します。私は別々にコマンドを実行しようとすると正常に動作します。 アドバイスでこれを解決するのに役立ちます。

答えて

1

あなたのコマンドはではなく、です。あなたのコマンドはシェルコードであり、シェル(ここではcmd.exe)以外では実行できません。本当にこのようなOS名を取得したい場合:あなたのコマンドを引数としてcmd.exeを実行してください。 systeminfo.exeを実行し、出力をシェルではなくGoで解析することを検討することもできます。

関連する問題