start
не является автономным приложением, это (внутренняя) команда интерпретатора командной строки Windows (cmd.exe
) (подробности: Справочник по командной строке / Start ), поэтому вам нужно "shell "для запуска команды start
.
Используйте cmd.exe
с параметром /C
и передайте start
и ваше приложение для запуска.
Как в этом примере:
s := []string{"cmd.exe", "/C", "start", `c:\path\to\your\app\myapp.exe`}
cmd := exec.Command(s[0], s[1:]...)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}
Или без среза команды:
cmd := exec.Command("cmd.exe", "/C", "start", `c:\path\to\your\app\myapp.exe`)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}
Вы также можете передать параметр /b
в start
, например, если вы не хотите, чтобы окно терминала для запущенногоприменение:
cmd := exec.Command("cmd.exe", "/C", "start", "/b", `c:\path\to\your\app\myapp.exe`)
if err := cmd.Run(); err != nil {
log.Println("Error:", err)
}