Как выполнить команду cmd из go?

В языке программирования Go существует несколько способов выполнить команду командной строки. Рассмотрим несколько из них.

С использованием пакета os/exec:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    // Создание команды
    cmd := exec.Command("cmd", "/C", "echo Hello, World!")

    // Выполнение команды и получение вывода
    output, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }

    // Вывод результатов выполнения команды
    fmt.Println(string(output))
}

В этом примере мы создаем новую команду cmd, передаем ей аргументы /C (для выполнения команд в командной оболочке Windows) и echo Hello, World!. Затем мы выполняем команду и получаем ее вывод, который может быть преобразован в строку и выведен.

С использованием пакета os/exec можно также передавать команде аргументы и устанавливать рабочую директорию. Например:

package main

import (
    "fmt"
    "os/exec"
)

func main() {
    // Создание команды
    cmd := exec.Command("cmd", "/C", "dir", "/A", "/B")

    // Установка рабочей директории
    cmd.Dir = "C:\"

    // Выполнение команды и получение вывода
    output, err := cmd.CombinedOutput()
    if err != nil {
        fmt.Println(err)
        return
    }

    // Вывод результатов выполнения команды
    fmt.Println(string(output))
}

В этом примере мы передаем команде dir /A /B, которая возвращает список файлов и директорий в текущей директории. Мы также устанавливаем рабочую директорию на C:\, чтобы выполнить команду в этой директории.

Кроме использования os/exec, в Go также существуют другие пакеты, которые облегчают выполнение команд. Например, пакет os предоставляет функцию os.StartProcess, которая также позволяет выполнить команду командной строки. Однако, чаще всего использование os/exec является наиболее удобным способом выполнить команду в Go.