如图执行, 加上find执行的失败,如果把管道后面find去除,可以成功执行。也就是这种方式
调用系统命令是正确的,是不是windows用go执行find会有权限问题呢?![8DCB.tmp.png](http://studygolang.qiniudn.com/160902/c42556e3525091a2d0c14a3aadf481b6.png)![8DCB.tmp.png](http://studygolang.qiniudn.com/160902/c42556e3525091a2d0c14a3aadf481b6.png)
在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
更多评论
非常感谢的你的回复,我有一个疑问,我感觉不是管道的问题啊,如果代码改成这样,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