Golang执行Windows命令

在Golang中如何执行Windows命令?例如我想用os/exec包运行diripconfig这样的命令,但总是遇到权限问题或命令不执行的情况。具体应该怎么正确设置Command的参数?还有如何获取命令执行后的输出结果?

2 回复

在Golang中,使用os/exec包执行Windows命令。例如:

cmd := exec.Command("cmd", "/c", "dir")
output, err := cmd.Output()

注意Windows命令需通过cmd /c调用。

更多关于Golang执行Windows命令的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Golang中执行Windows命令,可以使用os/exec包。以下是几种常见情况的示例:

1. 基本命令执行

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    // 执行dir命令
    cmd := exec.Command("cmd", "/c", "dir")
    output, err := cmd.Output()
    if err != nil {
        fmt.Println("执行错误:", err)
        return
    }
    fmt.Println(string(output))
}

2. 带参数的命令

func main() {
    // 执行带参数的命令
    cmd := exec.Command("ping", "google.com")
    output, err := cmd.Output()
    if err != nil {
        fmt.Println("执行错误:", err)
        return
    }
    fmt.Println(string(output))
}

3. 实时输出(逐行显示)

import (
    "bufio"
    "fmt"
    "os/exec"
)

func main() {
    cmd := exec.Command("cmd", "/c", "ping", "127.0.0.1")
    
    stdout, _ := cmd.StdoutPipe()
    cmd.Start()
    
    scanner := bufio.NewScanner(stdout)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
    }
    cmd.Wait()
}

4. 执行PowerShell命令

func main() {
    cmd := exec.Command("powershell", "-Command", "Get-Process")
    output, err := cmd.Output()
    if err != nil {
        fmt.Println("执行错误:", err)
        return
    }
    fmt.Println(string(output))
}

5. 带工作目录的命令

func main() {
    cmd := exec.Command("cmd", "/c", "dir")
    cmd.Dir = "C:\\"  // 设置工作目录
    output, err := cmd.Output()
    if err != nil {
        fmt.Println("执行错误:", err)
        return
    }
    fmt.Println(string(output))
}

注意事项:

  1. 命令路径:Windows中常用cmd /c来执行命令
  2. 权限:某些命令可能需要管理员权限
  3. 错误处理:务必处理可能的错误
  4. 安全:避免直接执行用户输入的未经验证命令

这些方法可以满足大多数Windows命令执行需求。

回到顶部