大部分go执行cmd命令都是,我也是这样写的
package main import ( "fmt" "os/exec" ) func main() { cmdExec := `cmd /c "D:\test test\AnyDesk.exe"` 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)) }
但是在使用过程中,偶然间发现上面所有的带引号和空格的路径,就出现了问题,提示路径找不到。后面经过一番的查找与测试,找到了使用如下方法去解决所面临的问题。
package main import ( "fmt" "os/exec" "syscall" ) func main() { cmd := exec.Command("cmd.exe") cmdExec := `cmd /c "D:\test test\AnyDesk.exe"` 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) } }
修改成这样,去测试,发现空格和引号问题已经不存在。
参考地址:go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案 – 知乎 (zhihu.com)
原文地址:http://www.cnblogs.com/lxz123/p/16870650.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性