大部分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)

最新文章

  1. java中值传递和引用传递
  2. reduce方法
  3. ActiveMQ学习(三)——MQ的通讯模式
  4. zz 如何在Linux下创建与解压zip, tar, tar.gz和tar.bz2文件
  5. fluent nhibernate 初体验
  6. poj 3264 Balanced Lineup (RMQ算法 模板题)
  7. PHP.3-DIV+CSS标准网页布局准备工作(上)
  8. (六)Angularjs - 启动引导
  9. C# 读取EXCEL数据
  10. AsyncResult
  11. android操作ini工具类
  12. [sklearn]官方例程-Imputing missing values before building an estimator 随机填充缺失值
  13. vs代码模板制作
  14. 设计模式学习心得<装饰器模式 Decorator>
  15. Linux补充
  16. 【Spring】——声明式事务配置详解
  17. 【Py-Github】根据条件筛选Github repo的例子
  18. zabbix 添加被监控主机
  19. camera理论基础和工作原理(转)
  20. VC.【转】窗口置于前台并激活的方法

热门文章

  1. 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application
  2. AIR32F103(八) 集成Helix MP3解码库播放MP3
  3. Golang如何实现节假日不打扰用户?
  4. 统一返回对象封装和统一异常捕获封装springboot starter
  5. Java入门与进阶 P4.1+P4.2
  6. 【分析笔记】Linux 内核自旋锁的理解和使用原则
  7. Dubbo2.7的Dubbo SPI实现原理细节
  8. mysql16 sql优化-order by-GROUP BY
  9. P2_小程序简介
  10. MySQL 版本号排序