【问题标题】:exec.command does not execute on windows (golang)exec.command 不在 Windows 上执行(golang)
【发布时间】:2019-12-21 11:32:19
【问题描述】:

我正在尝试让 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()
}

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

【问题讨论】:

  • wget 命令在 Windows 上默认不可用。
  • 我的猜测是你的命令字符串有问题。也许你应该预先构建它并在运行之前打印出来看看它是否是你想要的?
  • 有错误,您没有正确检查它们。
  • @icza 我已经安装了 wget。
  • 在这里跳出框框思考一下,但是为什么要引入对 wget 的依赖来实现您可以轻松在 Go 中实现的东西?

标签: windows go wget


【解决方案1】:

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

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

另见this answer 类似问题

【讨论】:

  • 您可能还想将第二个"temp/" + filename 更改为"temp/" + filepath
猜你喜欢
  • 2018-04-02
  • 2018-04-04
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多