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

go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案的更多相关文章

  1. DOS命令行中的双引号

    在DOS命令窗口下,运行C:\Program Files\WinRAR\WinRAR.exe,提示如下错误: 因为C:\Program Files\WinRAR\WinRAR.exe中含有空格,它被分 ...

  2. linux – 使用find -name命令的通配符和双引号

    转至:https://www.icode9.com/content-3-209958.html 双引号(和单引号)是否抑制了通配符扩展?如果是这样,那么为什么以下呢? find -name " ...

  3. python在执行命令时添加环境变量或指定执行路径

    cwd: 命令的执行路径,相当于os.chdir('/home')提前切换到对应路径 env: 环境变量,某些执行路径需要添加必须的环境变量,例如fastboot依赖与adb路径下的环境变量 impo ...

  4. C#程序调用cmd执行命令

    对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Console.ReadLine(); Syste ...

  5. C#程序调用cmd执行命令(转)

    C#通过程序来调用cmd命令的操作 string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Diagnos ...

  6. c#调用CMD编辑命令

    对于C#通过程序来调用cmd命令的操作,网上有很多类似的文章,但很多都不行,竟是漫天的拷贝.我自己测试整理了一下. 代码: string str = Console.ReadLine(); Syste ...

  7. NET Core 跨平台执行命令、脚本

    一.前言 我们可能会遇到需要在程序中执行一些系统命令,来获取一些信息:或者调用shell脚本..NET Core 目前已经可以跨平台执行,那么它如何跨平台执行命令呢,请看下面的讲解. 二.Proces ...

  8. 分发系统介绍、expect脚本远程登录、expect脚本远程执行命令、expect脚本传递参数

    7月19日任务 20.27 分发系统介绍20.28 expect脚本远程登录20.29 expect脚本远程执行命令20.30 expect脚本传递参数 20.27 分发系统介绍 公司业务逐渐扩大时, ...

  9. cmd实用命令

    1.netstat 查看电脑端口状况 实际应用举例:查看某软件坚监听的电脑端口. 在任务管理器中选择列...,打开PID的显示.在这里查看某个应用程序的线程ID是多少.例如QQ:4904. 运行,cm ...

  10. CentOS下利用sshpass不用手动输入密码远程执行命令

       在测试的时候要同时操作多台机器,每次都要挨个去执行几乎相同的命令或者修改一些设置,这样很影响工作效率也很烦,所以就想写一个脚本,远程自动去做这些操作.远程执行命令很简单,但是不能在执行命令加上命 ...

随机推荐

  1. [编程基础] 常用html标签使用介绍

    常用html标签使用介绍 本文主要记录常用的html标签使用说明,用起来的时候偶尔查查. 常用html标签列表 标签 英文全拼 作用 特点 <html></html> html ...

  2. 说一下三种jar包在Linux的启动方式

    最近在linux上发布了一个SpringBoot项目,研究了一下jar包在Linux上的集中启动方式,特在此分享一下. 这里默认要启动的jar包为demo-0.0.1-SNAPSHOT.jar 第一种 ...

  3. AtCoder Beginner Conest 284 解题报告

    AtCoder Beginner Conest 284 解题报告 \(\text{By DaiRuiChen007}\) \(\text{Contest Link}\) A. Sequence of ...

  4. 使用ProPerties集合存储数据-Properties集合中的方法store

    使用ProPerties集合存储数据 java.util.Properties`继承于Hashtable,来表示一个持久的属性集.它使用键值结构存储数据每个键及其对应值都是一个字符串.该类也被许多Ja ...

  5. 静态static关机子修饰成员方法-静态static的内存图

    静态static关机子修饰成员方法 静态方法 当 static 修饰成员方法时,该方法称为类方法 .静态方法在声明中有 static ,建议使用类名来调用,而不需要 创建类的对象.调用方式非常简单. ...

  6. sync.Once 使用及解析

    目录 前言 1. sync.Once 简介 2. sync.Once 源码解析 2.1 为什么 done 作为第一个字段 2.2 Do 方法的实现细节 2.3 其他重要细节 3. sync.Once ...

  7. springcloud04 Ribbbon

    Ribbbon虽然现在已经进入维护模式了,但是使用的还是很多的. 1.官网 https://github.com/Netflix/ribbon/wiki/Getting-Started 2.Ribbo ...

  8. 使用Navicat操作MySQL数据库

    一.Navicat连接数据库 ①进入Navicat,由于要使用的是MySQL数据库,选择MySQL ②输入连接名(这个是随便起的) 由上图可知连接数据库的四个要素 host:确定要操作的数据库在哪台电 ...

  9. ROS自定义数据类型

    1.简介 自定义数据包可以在使用数据的功能包内进行创建,也可以单独创建一个功能包来专门进行自定义数据类型. 1.步骤: 1.创建一个功能包 进入工作空间catkin_ws/src catkin_cre ...

  10. 【KAWAKO】soundtoch-使用可执行文件对音频进行变调或变速

    目录 下载 单次使用 使用python脚本批量处理 下载 从官网下载可执行文件. 单次使用 在终端中直接运行,会出现使用方法和可选参数. 变速就设置tempo,变调就设置pitch,都变就都设置.变速 ...