首页 > 其他分享 >go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案

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

时间:2022-11-08 18:12:53浏览次数:66  
标签:err 双引号 fmt cmd 空格 go cmdExec

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

标签:err,双引号,fmt,cmd,空格,go,cmdExec
From: https://www.cnblogs.com/lxz123/p/16870650.html

相关文章

  • Go_day02
    Go基础语法流程控制一共有三种:顺序结构,选择结构,循环结构if语句/*if与elseif的区别: 1:if无论是否满足条件都会向下执行,直到程序结束,elseif满足一个条件就会停止执行......
  • 【详细教程】一文参透MongoDB聚合查询
    MongoDB聚合查询什么是聚合查询聚合操作主要用于处理数据并返回计算结果。聚合操作将来自多个文档的值组合在一起,按条件分组后,再进行一系列操作(如求和、平均值、最大值、最......
  • go-zero微服务实战系列(十一、大结局)
    本篇是整个系列的最后一篇了,本来打算在系列的最后一两篇写一下关于k8s部署相关的内容,在构思的过程中觉得自己对k8s知识的掌握还很不足,在自己没有理解掌握的前提下我觉得也很......
  • idea pycharm webstrom phpstrom goland clion 上传文件
    使用ide上传文件代替postman上传文件环境文件http-client.private.env.json{"dev":{"host":"http://localhost:15731/api/v1/","jwt":""}}......
  • 2022 杭电杯(7) I Counting Good Arrays
    本题是2022CCPCF题的强化版.给出一个n,m求出所有长度小于等于n的数列\(a_k(k\len)\)且\(a_k\lem\)且\(a_i|a_{i+1}\)固定n显然可以发现对于m的标准分解\(m=p_1^{k......
  • Golang 实现时间戳和时间的转化
    何为时间戳:时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时......
  • 孙荣辛|大数据穿针引线进阶必看——Google经典大数据知识
    大数据技术的发展是一个非常典型的技术工程的发展过程,荣辛通过对于谷歌经典论文的盘点,希望可以帮助工程师们看到技术的探索、选择过程,以及最终历史告诉我们什么是正确的选......
  • log4go使用及源码解析
    1.功能模块1.1配置文件日志输出支持:控制台、log文件、xml、分级日志:FINEST|FINE|DEBUG|TRACE|INFO|WARNING|ERROR 2.源码解析  2.1文件结构    2.2 ......
  • 狂神说Go语言笔记—Go基础语法
    注释给别人看的,机器并不会执行这行语句1.单行注释//我是单行注释2.多行注释/*我是多行注释我是多行注释我是多行注释我是多行注释*///这是一个main函数,这个......
  • Go | 浅谈包管理模式
    任何一门编程语言都离不开对各种工具包的使用,工具包的管理就显得异常重要了。Go的包管理方式是逐渐演进的,本文介绍Go语言的两种包管理模式。GOPATH模式引包(不推荐)在1......