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

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)
	}
}

你可能感兴趣的:(Go语言,golang,开发语言,后端)