go在windows下执行系统命令调用问题?求教

stuven · · 2219 次点击
stevewang
耶和华是我的牧者,我必不至缺乏。
`find /i \"hello\" d:\\test.txt`这个字符串不能作为cmd.exe的命令参数,必须作为cmd.exe子进程的标准输入。
#4
更多评论
stevewang
耶和华是我的牧者,我必不至缺乏。
管道`|`是在shell下才支持的,不能直接用于创建进程。
#1
stevewang
耶和华是我的牧者,我必不至缺乏。
在windows下应该是这样: ``` package main import ( "bytes" "fmt" "io" "os/exec" ) func main() { cmd := exec.Command("cmd.exe") out := &bytes.Buffer{} cmd.Stdout = out w, err := cmd.StdinPipe() if err != nil { panic(err) } if err := cmd.Start(); err != nil { panic(err) } io.WriteString(w, `echo "helloworld" | find /i "hello"`) io.WriteString(w, "\n") w.Close() if err := cmd.Wait(); err != nil { panic(err) } fmt.Println(out.String()) } ```
#2