-2

Golang で OS 名を取得しようとしました。以下は私のコードです。

// 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

コマンドは正しいです。コマンドを個別に実行しようとすると、正常に動作します。この問題を解決するのを手伝ってください。よろしくお願いします。

4

1 に答える 1

1

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

于 2016-03-21T07:05:54.823 に答える