go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案
大部分go执行cmd命令都是
package main
import (
"fmt"
"os/exec"
)
func main() {
cmdExec := `ping "127.0.0.1"`
cmd := exec.Command("cmd", "/C", cmdExec)
out, err := cmd.Output()
cmd.Run()
if err != nil {
fmt.Println(err)
return
}
cmd.Wait()
fmt.Println(string(out))
}
但是遇到命令行中有空格或者双引号就会出现cmd执行失败,可以通过以下代码解决
package main
import (
"fmt"
"os/exec"
"syscall"
)
func main() {
cmd := exec.Command("cmd.exe")
cmdExec := `mkdir "C:\a a"`
fmt.Println(fmt.Sprintf(`/c %s`, cmdExec))
//核心点,直接修改执行命令方式
cmd.SysProcAttr = &syscall.SysProcAttr{CmdLine: fmt.Sprintf(`/c %s`, cmdExec), HideWindow: true}
output, err := cmd.Output()
fmt.Printf("output:\n%s\n", output)
if err != nil {
fmt.Printf("error: %+v\n", err)
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/61527.html