首页 > 解决方案 > 使用 CURL 从批处理文件中下载

问题描述

我正在尝试使用 CURL 从批处理文件下载 maya devkit:

call curl https://s3-us-west-2.amazonaws.com/autodesk-adn-transfer/ADN+Extranet/M%%26E/Maya/devkit+2018/Maya2018-DEVKIT_Windows.zip --output tmp.zip

但是,这给了我一个空的输出文件。cmd奇怪的是,如果我在(减去额外的百分号)中运行完全相同的命令,它会完美运行。

是否有任何符号需要转义才能使此特定命令起作用?

标签: batch-filecurl

解决方案


尝试这个:

curl -A "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64)" -L "https://s3-us-west-2.amazonaws.com/autodesk-adn-transfer/ADN+Extranet/M%26E/Maya/devkit+2018/Maya2018-DEVKIT_Windows.zip" -o tmp.zip

或者放入.bat/.cmd批处理文件,通过这个:

curl -A "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64)" -L "https://s3-us-west-2.amazonaws.com/autodesk-adn-transfer/ADN+Extranet/M%%26E/Maya/devkit+2018/Maya2018-DEVKIT_Windows.zip" -o tmp.zip

建议通过-A开关添加用户代理,还需要用双引号将网址括起来。
有时您还需要-L-e RefererURL下载文件。

通常call是不必要的,如果你想在单独的线程中下载它,你可以使用start. 当您需要调用子过程/函数并传递参数时使用call,并且由于它是另一层批处理调用,因此您还需要%再次加倍,因为它被转义了两次。
这意味着,这将在批处理文件中工作:

call curl -A "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64)" -L "https://s3-us-west-2.amazonaws.com/autodesk-adn-transfer/ADN+Extranet/M%%%%26E/Maya/devkit+2018/Maya2018-DEVKIT_Windows.zip" -o tmp.zip

推荐阅读