我想find使用exec程序包执行Windows命令,但是Windows进行了一些奇怪的转义。
find
exec
我有类似的东西: out, err := exec.Command("find",“SomeText”).Output()
out, err := exec.Command("find",
).Output()
但这会引发错误,因为Windows会将其转换为 find /SomeText"
find /SomeText"
有人知道为什么吗?如何find使用exec程序包在Windows上执行?
谢谢!
OK,这是一个比较复杂一点比你预期,但有 是 一个解决方案:
package main import ( "fmt" "os/exec" "syscall" ) func main() { cmd := exec.Command(`find`) cmd.SysProcAttr = &syscall.SysProcAttr{} cmd.SysProcAttr.CmdLine = `find "SomeText" test.txt` out, err := cmd.Output() fmt.Printf("%s\n", out) fmt.Printf("%v\n", err) }
不幸的是,尽管在2011年添加了对此功能的支持,但它似乎尚未纳入文档中。(尽管也许我只是不知道在哪里看。)