package tool
import (
"fmt"
"os/exec"
"runtime"
"golang.org/x/text/encoding/simplifiedchinese"
)
type Charset string
const (
UTF8 = Charset("UTF-8")
GB18030 = Charset("GB18030")
)
func ConvertByte2String(byte []byte, charset Charset) string {
var str string
switch charset {
case GB18030:
var decodeBytes, _ = simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
str = string(decodeBytes)
case UTF8:
fallthrough
default:
str = string(byte)
}
return str
}
func OsCommandExec(minglingAndCanshu string) string {
var zifuji Charset
var cmd *exec.Cmd
if runtime.GOOS == "windows"{
zifuji=GB18030
cmd = exec.Command("cmd", "/C",minglingAndCanshu )
}else {
zifuji=UTF8
cmd = exec.Command("sh", "-c",minglingAndCanshu )
}
//Linux调用系统命令: ping两个包,每个最多等待1秒。命令分割用;
//cmd := exec.Command("sh", "-c", "ping 192.168.99.1 -c 2 -W 1; dir")
//window调用系统命令:ping两个包,每个最多等待1秒。命令分割用&
//cmd := exec.Command("cmd", "/C", `ping 192.168.99.1 -n 2 -w 1000 & dir`)
stdoutStderr, err := cmd.CombinedOutput()
if err != nil {
fmt.Printf("%s\n",err.Error())
}
return fmt.Sprintf("%s\n", ConvertByte2String(stdoutStderr, zifuji))
}
Golang 调用系统命令 同时处理windows字符集问题
最新推荐文章于 2023-05-13 11:11:17 发布