go - Windows中的Golang cmd命令

标签 go cmd

我正在尝试在golang中运行cmd命令,但是没有输出。我正在尝试安装npm软件包,通过golang设置环境变量,但无法执行操作,有人可以帮忙吗

package main
import (
        "bytes"
        "fmt"
        "log"
        //"os"
        "os/exec"
)

const ShellToUse = "cmd"
func Shellout(command string) (error, string, string) {
    var stdout bytes.Buffer
    var stderr bytes.Buffer
    cmd := exec.Command(ShellToUse, "-c", command)
    cmd.Stdout = &stdout
    cmd.Stderr = &stderr
    err := cmd.Run()
    return err, stdout.String(), stderr.String()
}
func main() {
     var err, out, errout = Shellout("npm install -g rimraf")    
     if err != nil {
         log.Printf("error: %v\n", err)
     }
     fmt.Println("--- stdout ---")
     fmt.Println(out)
     fmt.Println(errout)
}
预期的输出我觉得应该安装rimraf软件包,但事实并非如此。它没有任何错误,但是输出了:
Microsoft Windows [Version 10.0.18363.1016]
(c) 2019 Microsoft Corporation. All rights reserved.
C:\Users\jhamuk2\Desktop> // This also the output and there is same path below which shows output ended.

最佳答案

我不在Windows上,所以无法100%确定:
这就是我在Mac上调用上述命令的方式,并且知道Go在Windows上很可能是相同的(或非常相似)。

    cmd := exec.Command("npm", "install", "-g rimraf")
    fmt.Println("> " + cmd.String())
    out, err := cmd.CombinedOutput()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(string(out))

关于go - Windows中的Golang cmd命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63684491/

相关文章:

testing - 为什么 GoConvey 测试失败并显示错误代码 0?

python - Go 等效于 Python 中的 decode ('hex' )

go - 您可以输入断言匿名结构吗?

android - 如何从 cmd(DroidEdit,终端)运行 android qpython 脚本?

windows - 如何最小化我的 bat 文件中的命令提示符

go - 如何从 Go 中的另一个包导入结构

http - Beego 从 HTTP 切换到 HTTPS

xml - 如何使用命令提示符 echo 命令编写带双引号的 XML 标记

python - Windows shell %ERRORLEVEL% 变量是否有字符限制?

windows - 在 Windows 中循环查找隐藏文件夹