При использовании exec.Command, первым аргументом там всегда исполняемый файл, а дальше идет перечисление аргументов, которые этому исполняемому файлу будут передаваться. Причем, их не надо экранировать.
Несколько примеров:
path := `c:\Program files\some program\program.exe`
// аналогично вызову в консоли start "c:\Program files\some data"
cmd := exec.Command("start", path)
......
// аналогично вызову в консоли "c:\Program files\some program\program.exe"
cmd := exec.Command(path)
......
// аналогично вызову в консоли some_prog.exe -flag1 value1 -flag2 value2
cmd := exec.Command("some_prog.exe", "-flag1", "value1", "-flag2", "value2")
......
Обратите внимание, что все аргументы нужно посылать отдельными строками и не заключать их лишний раз в кавычки, как обычно мы в консоли привыкли. Потому что этапа парсинга команды тут нет, тут сразу посылается массив аргументов операционной системе напрямую.
Кстати, если вам просто нужен полный ответ команды stdout+stderr, можете использовать метод cmd.CombinedOutput(). Он выполнил программу, дождется ее завершения и вернет полностью то, что она писала в консоль.