很多时候我们需要调用操作系统的命令来执行一些程序,在某些特殊的情况下,我们需要拿到程序的调用结果,比如调用ping www.mashangedu.cn 能够返回每次ping的结果,以下代码为第二个版本,第一个版本参考网上,但是发现有中文异常,故又经过google,改进了第一版,俗话说天下文章一大套,就看你会不会套了,对于程序员来说也一样,就看怎么ctrl c v了。废话不多说了,上干货:

package mainimport ("bufio""fmt""io""os""os/exec""golang.org/x/text/encoding/simplifiedchinese"
)type Charset stringconst (UTF8    = Charset("UTF-8")GB18030 = Charset("GB18030")
)func main(){execCommand(os.Args[1], os.Args[2:])
}//封装一个函数来执行命令
func execCommand(commandName string, params []string) bool {//执行命令cmd := exec.Command(commandName,params...)//显示运行的命令fmt.Println(cmd.Args)stdout, err := cmd.StdoutPipe()errReader,errr := cmd.StderrPipe()if errr != nil{fmt.Println("err:"+errr.Error())}//开启错误处理go handlerErr(errReader)if err != nil {fmt.Println(err)return false}cmd.Start()in := bufio.NewScanner(stdout)for in.Scan() {cmdRe:=ConvertByte2String(in.Bytes(),"GB18030")fmt.Println(cmdRe)}cmd.Wait()cmd.Wait()return true
}//开启一个协程来错误
func handlerErr(errReader io.ReadCloser){in := bufio.NewScanner(errReader)for in.Scan() {cmdRe:=ConvertByte2String(in.Bytes(),"GB18030")fmt.Errorf(cmdRe)}
}//对字符进行转码
func ConvertByte2String(byte []byte, charset Charset) string {var str stringswitch charset {case GB18030:var decodeBytes,_=simplifiedchinese.GB18030.NewDecoder().Bytes(byte)str= string(decodeBytes)case UTF8:fallthroughdefault:str = string(byte)}return str
}

编译后的执行结果如下:

我的文件名称为cmdgo,故编译后为cmdgo.exe ,在linux下也可以哦。

有问题可以在评论区留言,技术问题可以私聊我哦。

Go执行CMD或者Shell命令并且实时输出到控制台,效果和CMD执行结果方式完全一样相关推荐

  1. sharpssh远程linux监控系统,利用SharpSsh远程执行linux的shell命令

    利用SharpSsh远程执行linux的shell命令 (2011-07-26 14:38:02) SharpSSH是一个C#的开源项目,可以利用SSH连接linux系统.并执行shell等命令. 而 ...

  2. java解析shell命令_Android中执行java命令的方法及java代码执行并解析shell命令

    这篇文章给大家介绍Android中执行java命令的方法及java代码执行并解析shell命令,需要的朋友一起学习 android中执行java命令的方法大家都晓得吗,下面一段内容给大家带来了具体解析 ...

  3. python调用adb shell命令_如何在python脚本里面连续执行adb shell后面的各种命令

    如何在python脚本里面连续执行adb shell后面的各种命令 adb shell "cd /data/local && mkdir tmp" adb shel ...

  4. 在JSP中,点击网页某个按钮或者超链接执行某些需要确认的命令时,弹出确认框如下效果: 如果点击确定,则执行要操作的命令。如果点击取消则不执行。 实现步骤: 1:在jsp,或者html

    如下效果: 如果点击确定,则执行要操作的命令.如果点击取消则不执行. 实现步骤: 第1步 在jsp,或者html页面的的<head></head>标签之间添加如下js代码: & ...

  5. awk命令中执行多条shell命令

    awk中使用的shell命令,有2种方法: 一.使用system() 二.使用print cmd | "/bin/bash" http://www.gnu.org/software ...

  6. pythonsubprocess执行多条shell命令_python中subprocess批量执行linux命令

    可以执行shell命令的相关模块和函数有: os.system os.spawn os.popen --废弃 popen --废弃 commands --废弃,3.x中被移除 以上执行shell命令的 ...

  7. python调用shell命令-「Python」6种python中执行shell命令方法

    用Python调用Shell命令有如下几种方式: 第一种: os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等 ...

  8. bat循环执行带参数_dos命令exit图文教程,结束退出CMD.EXE程序或当前bat批处理脚本...

    大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频. 今天我们学习dos命令中的exit这个命令,退出 CMD.EXE 程序(命令解释器)或当前批处理脚本 ...

  9. nohup php,使用php执行多个shell命令nohup

    我一直在问自己这个多年,但我总觉得有没有其他解决办法不是将所有命令到一个脚本并执行它想:nohup . ./multiplecommands.sh & 我不知道为什么我没有早尝试,但至少这个小 ...

最新文章

  1. 数据预处理--噪声_为什么数据对您的业务很重要-以及如何处理数据
  2. Java开发必会的Linux命令
  3. C++析构函数不能失败的4个理由
  4. 【python 图像处理】skimage的子模块介绍
  5. ercp手术为什么那么贵_尼泊尔佛像为什么那么贵?
  6. AspNetCore 多环境配置 以及注册 消费Consul
  7. 虚拟环境下配置拨号接入的×××
  8. PIC单片机(PIC16F15323)的环境搭建
  9. c语言ip地址转16进制,点分十进制形式的ip地址转化为十六进制数
  10. Eigen库计算两个向量夹角
  11. 线程执行完之后会释放吗_有人说,爬完黄山之后的第二件事就是去歙县徽州古城,你会去吗?...
  12. 用html做一个漂亮的网站,个人网页,css
  13. qiankun前端微服务框架-同一服务器同一端口
  14. 批量下载网页链接---数据集批量下载
  15. 软件测试思想者 - 初识抑郁症
  16. 基址寻址和变址寻址的不同
  17. 机器学习-贝叶斯分类
  18. 实现一个博客系统(前端页面设计)
  19. ABAP 长文本内容数据迁移 SAP
  20. 转自:今天我们怎样学软件技术,怎样教软件课程?——作者:金旭亮

热门文章

  1. 易备数据备份软件,主动防勒索备份 MySQL 和 MariaDB 数据库
  2. 微信小程序发展优势,哪些行业适合做微信小程序?
  3. WebSocket心跳
  4. linux 去掉硬盘windows10,Win10禁用自动挂载硬盘的三种方法
  5. 【Leedcode】环形链表必备的面试题和证明题(附图解)
  6. sip等通信资料汇总
  7. 什么是邮件发送信誉?
  8. js判断客户端是pc端还是移动端
  9. CreateFile函数
  10. Redis - 高性能 + 高并发