Golang执行Windows命令
在Golang中如何执行Windows命令?例如我想用os/exec包运行dir或ipconfig这样的命令,但总是遇到权限问题或命令不执行的情况。具体应该怎么正确设置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))
}
注意事项:
- 命令路径:Windows中常用
cmd /c来执行命令 - 权限:某些命令可能需要管理员权限
 - 错误处理:务必处理可能的错误
 - 安全:避免直接执行用户输入的未经验证命令
 
这些方法可以满足大多数Windows命令执行需求。
        
      
                    
                    
                    
