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

stuven · · 2218 次点击
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
更多评论
stevewang
耶和华是我的牧者,我必不至缺乏。
管道`|`是在shell下才支持的,不能直接用于创建进程。
#1
非常感谢的你的回复,我有一个疑问,我感觉不是管道的问题啊,如果代码改成这样,find命令依然执行的失败。好奇怪.... ``` package main import ( "os/exec" "fmt" ) func main() { cmd_content := `find /i \"hello\" d:\\test.txt` cmd := exec.Command("cmd.exe", "/c", cmd_content) buff, err := cmd.Output() if err != nil{ panic(err) } fmt.Printf("buffe:%s", string(buff)) } ```
#3