亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang - 無法從 pipped Windows 命令中獲取結果

Golang - 無法從 pipped Windows 命令中獲取結果

Go
拉莫斯之舞 2023-01-03 11:14:45
我正在努力獲取其中包含管道的 Windows 命令的輸出。這是命令:系統信息 | findstr /B /C:"操作系統名稱"這是代碼:c1 := exec.Command("systeminfo")c2 := exec.Command("findstr", "/B", `/C:"OS Name"`)r, w := io.Pipe()c1.Stdout = wc2.Stdin = rvar b2 bytes.Bufferc2.Stdout = &b2c1.Start()c2.Start()c1.Wait()w.Close()c2.Wait()io.Copy(os.Stdout, &b2)fmt.Println(b2)輸出: []如果我在 cmd 中復制/粘貼命令,它將返回結果。不知道為什么我不能在我的 Go 程序中反映出來。我嘗試了幾種變體,包括在第一個命令中添加“cmd”、“/C”,但也沒有成功。
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

刪除io.Copy不重定向到 STDOUT 并打印緩沖區的內容。


    systemCmd := exec.Command("systeminfo")

    findCmd := exec.Command("findstr", "/B", "/C:OS Name")


    reader, writer := io.Pipe()

    buf := bytes.NewBuffer(nil)

    systemCmd.Stdout = writer

    findCmd.Stdin = reader

    findCmd.Stdout = buf

    systemCmd.Start()

    findCmd.Start()

    systemCmd.Wait()

    writer.Close()

    findCmd.Wait()

    reader.Close()


    fmt.Println(">>" + buf.String())

IE:


PS C:\Users\user\Documents> go run .\main.go

>>OS Name:                   Microsoft Windows 10 Pro


查看完整回答
反對 回復 2023-01-03
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號