@hea007

Странная работа в Go [exec] или как правильно выполнить команду OS?

cmd := exec.Command("cmd", "/C", "copy", "\""+filename+"\"", "\""+dest+"\"")
			err := cmd.Run()
			if err != nil {
				log.Fatal(err)
			}

[filename] и [dest] это переменные(пути) порождаемые циклом.

Почему не работает этот код?
  • Вопрос задан
  • 3210 просмотров
Решения вопроса 1
@mayorovp
Если exec.Command получает аргументы раздельно - значит, она их обязана экранировать самостоятельно. Попробуйте убрать добавление кавычек к последним аргументам.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
uvelichitel
@uvelichitel Куратор тега Go
habrahabr.ru/users/uvelichitel
Судя по пути /C - это windows. На nix системах код выглядит так exec.Command( "cp", filename, dest)или exec.Command( "mv", filename, dest). У меня нет windows чтобы проверить, но попробуйте exec.Command( "copy", filename, dest)
Ну и можно вручную
src, err::=os.Open(filename)
dst, err:=os.Create(dest)
size, err:= io.Copy(dst , src)
if err != nil {fmt.Println(err)}
fmt.Println("Размер", size)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы