Go语言执行Windows命令,并获取到执行结果,并解决乱码问题

使用exec包执行Windows命令行命令

调用执行函数模拟命令执行,如果我想查看D盘下的文件,可以使用dir D:\,但是在go语言里面,直接执行会找不到dir命令

可以使用cmd /C去调用Windows的命令执行目录,然后在执行dir
例如:cmd /C dir D:\

//调用执行函数
cmd := exec.Command("cmd", "/C", "dir", "D:\\") 

//打开一个命令行,并执行 cmd /C dir D:\
//返回执行后的结果和error
out, err := cmd.CombinedOutput()
if err != nil {
	fmt.Println(err)
	return
}

fmt.Println(out) //打印执行后的结果


解决输出的乱码问题

下载text包

go get github.com/golang/text

复制目录下的text到你的工作目录(src)下的src/golang.org/x/

在这里插入图片描述


完整代码

package main

import (
	"fmt"
	"os/exec"

	"golang.org/x/text/encoding/simplifiedchinese"
)

func main() {
	//windwos
	cmd := exec.Command("cmd", "/C", "dir", "D:\\")
	out, err := cmd.CombinedOutput()
	if err != nil {
		fmt.Println(err)
		return
	}

	output, err := simplifiedchinese.GB18030.NewDecoder().String(string(out)) //转换字符集,解决UTF-8乱码
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println(output)

}
posted @ 2023-01-11 10:35  雪花凌落的盛夏  阅读(132)  评论(0编辑  收藏  举报  来源