Golang执行cmd命令行的方法

1. Golang执行系统命令使用 os/exec Command方法:

func Command(name string, arg ...string) *Cmd

第一个参数是命令名称,后面参数可以有多个命令参数。

cmd := exec.Command("ls", "-a")
if stdout, err := cmd.StdoutPipe(); err != nil {     //获取输出对象,可以从该对象中读取输出结果

    log.Fatal(err)

}

defer stdout.Close()   // 保证关闭输出流
if err := cmd.Start(); err != nil {   // 运行命令

    log.Fatal(err)

}

if opBytes, err := ioutil.ReadAll(stdout); err != nil {  // 读取输出结果    

    log.Fatal(err)

} else {
    log.Println(string(opBytes))

}

2.  将命令的输出结果重定向到文件中:

stdout, err := os.OpenFile("stdout.log", os.O_CREATE|os.O_WRONLY, 0600)   
    if err != nil {
        log.Fatalln(err)

    }

    defer stdout.Close()
    cmd.Stdout = stdout   // 重定向标准输出到文件

    // 执行命令

    if err := cmd.Start(); err != nil {
        log.Println(err)

    }

3. cmd的Start和Run方法的区别:

Start执行不会等待命令完成,Run会阻塞等待命令完成。

cmd := exec.Command("sleep", "10")
err := cmd.Run()  //执行到此处时会阻塞等待10秒
err := cmd.Start()   //如果用start则直接向后运行
if err != nil {
    log.Fatal(err)

}
err = cmd.Wait()   //执行Start会在此处等待10秒

4. 如果命令名称和参数写成一个字符串传给Command方法,可能会执行失败报错:file does not exist,但此时如果按以下方式强行启动一个DOS窗口(windows平台)进行执行,也是成功的。

在Windows平台,强行弹出DOS窗口执行命令行:

cmdLine := pscp -pw pwd local_filename user@host:/home/workspace
cmd := exec.Command("cmd.exe", "/c", "start " + cmdLine)
err := cmd.Run()
fmt.Printf("%s, error:%v \n", cmdLine, err)

5. 运行时隐藏golang程序自己的cmd窗口:

go build -ldflags -H=windowsgui 

6. Windows平台上,执行系统命令隐藏cmd窗口:

cmd := exec.Command("sth")
if runtime.GOOS == "windows" {
    cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
}
err := cmd.Run()

到此这篇关于Golang执行cmd命令行的方法的文章就介绍到这了,更多相关Golang执行cmd命令行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • golang 执行命令行的实现

    一般情况下,在 golang 中执行一些命令如 git clone,则可以使用 exec.Command 函数 func RunCommand(path, name string, arg ...string) (msg string, err error) { cmd := exec.Command(name, arg...) cmd.Dir = path err = cmd.Run() log.Println(cmd.Args) if err != nil { log.Println("er

  • golang实现命令行程序的使用帮助功能

    通过flag包我们可以很方便的实现命令行程序的参数标志,接下来我们来看看如何实现命令行程序的使用帮助,通常以参数标志-h或--help的形式来使用. 自动生成使用帮助 我们只需要声明其他参数标志,并执行解析,flag包会帮我们自动生成使用帮助. //main.go //输出2个数,输出较大的数 package main import ( "flag" "fmt" "math" ) func main() { firstFlag := flag.F

  • Golang命令行进行debug调试操作

    GoLang调试工具Delve 1.先获取呗: go get -u github.com/derekparker/delve/cmd/dlv 2.编写测试代码呗: func main(){ http.HandleFunc("/test",func(writer http.ResponseWriter,req *http.Request){ //TODO }) log.Fatal(http.ListenAndServe("127.0.0.1:8080",nil)) }

  • Golang开发命令行之flag包的使用方法

    目录 1.命令行工具概述 2.flag包介绍 3.flag包命令行参数的定义 4.flag包命令行参数解析 5.flag包命令行帮助 6.flag定义短参数和长参数 7.示例 1.命令行工具概述 日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,鼠标能够让用户更容易上手,降低用户学习成本. 而对于开发者,键盘操作模式能显著提升生产力,还有在一些专业工具中, 大量使用快捷键代替繁琐的鼠标操作,能够使开发人员更加专注于工作,提高效率,因为键盘操作模式更容易产生肌肉记忆 举个栗子:我司业务

  • golang中命令行库cobra的使用方法示例

    简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序.下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 ap

  • Golang中基础的命令行模块urfave/cli的用法说明

    前言 相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络.硬件.软件环境下去启动一个服务的时候,总会有一些启动参数是不确定的,这时候就需要通过命令行模块去解析这些参数,urfave/cli是Golang中一个简单实用的命令行工具. 安装 通过 go get github.com/urfave/cli 命令即可完成安装. 正文 使用了urfave/cli之后,你的程序就会变成一个命令行程序,以下就是通过urfave/cli创建的一个最简单的命令行程序,它设定了一些基础的信息,

  • Golang执行cmd命令行的方法

    1. Golang执行系统命令使用 os/exec Command方法: func Command(name string, arg ...string) *Cmd 第一个参数是命令名称,后面参数可以有多个命令参数. cmd := exec.Command("ls", "-a") if stdout, err := cmd.StdoutPipe(); err != nil {     //获取输出对象,可以从该对象中读取输出结果     log.Fatal(err)

  • PowerShell入门教程之PowerShell和Cmd命令行的关系?

    PowerShell是命令行的加强版吗?PowerShell能执行命令行的所有命令吗?PowerShell要替代命令行?这三个问题的答案足以让我们了解PowerShell与Cmd命令行之间的关系.让我们慢慢道来... PowerShell中的CMD命令 启动PowerShell,在其中输入几个常用的Cmd命令 复制代码 代码如下: PS D:\Projects\Practise\PowerShell> dir     Directory: D:\Projects\Practise\PowerSh

  • 将java程序打成jar包在cmd命令行下执行的方法

    前言 大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口.本文将给大家介绍java程序打成jar包在cmd命令行下执行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 一.打包 二.修改配置文件是程序能够引用第三方jar包 1.新建一个文件夹,用来存储这个项目 ------------第三方jar包单独存在一个文件夹下面(这里放在了lib下面)(重点是lib要和weixin.jar同

  • go语言执行windows下命令行的方法

    本文实例讲述了go语言执行windows下命令行的方法.分享给大家供大家参考.具体如下: 在golang里执行windows下的命令行,例如在golang里面调用 del d:\a.txt 命令 复制代码 代码如下: package main import(     "fmt"     "os/exec" ) func main(){       c := exec.Command("cmd", "/C", "del

  • C#中隐式运行CMD命令行窗口的方法

    MS的CMD命令行是一种重要的操作界面,一些在C#中不那么方便完成的功能,在CMD中几个简单的命令或许就可以轻松搞定,如果能在C#中能完成CMD窗口的功能,那一定可以使我们的程序简便不少. 下面介绍一种常用的在C#程序中调用CMD.exe程序,并且不显示命令行窗口界面,来完成CMD中各种功能的简单方法. 如下所示: 复制代码 代码如下: System.Diagnosties.Process p=new System.Diagnosties.Process(); p.StartInfo.FileN

  • C# 调用命令行执行Cmd命令的操作

    1.不知道为啥 process.StartInfo.Arguments = "/c" + "start D:/Tim/Bin/QQScLauncher.exe"; 这个执行命令一定要加/c ,/c ,/c,重要的事说3遍 才能正常编译并运行 cmd /c dir:是执行完dir命令后关闭命令窗口: cmd /k dir:是执行完dir命令后不关闭命令窗口. process.StartInfo.Arguments 我猜测这个调用的是第一张图的窗口,而不是二图的窗口 代

  • 使用cmd命令行窗口操作SqlServer的方法

    osql 工具是一个 Microsoft Windows 32 命令提示符工具,您可以使用它运行 Transact-SQL 语句和脚本文件.osql 工具使用 ODBC 数据库应用程序编程接口 (API) 与服务器通讯. 本文主要介绍使用windows下的使用cmd命令行窗口操作Sqlserver,首先我们可以运行 osql ?/ ,这样就把所有可以通过CMD命令行操作sqlserver的命令显示出来. osql下载地址 http://www.jb51.net/database/57662.ht

  • Python编程实现控制cmd命令行显示颜色的方法示例

    本文实例讲述了Python编程实现控制cmd命令行显示颜色的方法.分享给大家供大家参考,具体如下: 基于win7 + python3.4 运行效果: import ctypes import sys '''Windows CMD命令行颜色''' # 句柄号 STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE= -11 STD_ERROR_HANDLE = -12 # 前景色 FOREGROUND_BLACK = 0x0 # 黑 FOREGROUND_BLUE = 0

  • PHP中执行cmd命令的方法

    本文介绍下,在php代码中执行cmd命令的方法,介绍下在php.ini文件中配置safe_mode参数支持命令执行的方法,有需要的朋友参考下. 说明: 本节内容在wamp包安装的环境实现. 首先,打开php.ini,关掉安全模式safe_mode = off,然后在看看 禁用函数列表 disable_functions = proc_open, popen, exec, system, shell_exec ,把exec去掉. php代码: 复制代码 代码如下: <?php exec("m

  • python隐藏终端执行cmd命令的方法

    在用pyinstaller打包后不想要后面的终端命令框,但是打包时加了-w或者--noconsole命令后会导致cmd程序不能运行从而出错.这个时候用subprocess可以解决该类问题. import subprocess cmd = 'your command' res = subprocess.call(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 这样打包后出

随机推荐