exec.command不在windows(golang)上执行

exec.command不在windows(golang)上执行,windows,go,wget,Windows,Go,Wget,我试图让wget将一个文件下载到一个临时目录中,然后将其移动到适当的路径。我正在尝试使用以下代码: // run shell `wget <URL> -O <FILEPATH>` cmd := exec.Command("cmd /K wget", url, "-O", "temp/" + filepath, "&& echo Done downloading, moving... '&&' del -y", filenam

我试图让wget将一个文件下载到一个临时目录中,然后将其移动到适当的路径。我正在尝试使用以下代码:

    // run shell `wget <URL> -O <FILEPATH>`
    cmd := exec.Command("cmd /K wget", url, "-O", "temp/" + filepath, "&& echo Done downloading, moving... '&&' del -y", filename,"'&&' mv temp/", filename, filename)
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr
    return cmd.Run()
}
//运行shell`wget-O`
cmd:=exec.Command(“cmd/K wget”,url,“-O”,“temp/”+filepath,&&echo完成下载,移动…'&&&&del-y”,文件名,“&&mv temp/”,文件名,文件名)
cmd.Stdout=os.Stdout
cmd.Stderr=os.Stderr
return cmd.Run()
}

但是当调用时,它不会输出任何内容。没有错误,什么都没有。

如果你真的想保留这个解决方案(缺点已经在评论中指出),你需要将每个参数分隔到
cmd.exe
,这样你就可以在每个地方放置一个空格,你就有一个单独的参数:

cmd := exec.Command("cmd", "/K", "wget", url, "-O", "temp/" + filepath, "&&", "echo", "Done downloading, moving...", "&&", "del", "-y", filename, "&&", "mv", "temp/" + filename, filename)

另请注意一个类似的问题

默认情况下,
wget
命令在Windows上不可用。我猜您的命令字符串中有错误。也许您应该在运行它之前预先构造它并将其打印出来,看看它是否是您想要的?有错误,您没有正确地检查它们。@icza我已经安装了wget。在这里有点跳出框框,但是为什么要引入对
wget
的依赖来实现一些您可以在Go中轻松实现的东西呢?您可能还需要将第二个
“temp/”+文件名更改为
“temp/”+文件路径