Windows使用代理从URL批量下载文件

我必须从网上下载一个xls文件并每天早上保存到一个本地文件夹中。 我想制作一个CMD文件,然后使用Windows调度程序。

该文件始终具有相同的URL,如www.example.com/myfile.xls

我已经find了一些教程,并删除了代码,但我的问题是,我需要使用代理服务器 (“proxy.mycompany.com”和端口“1234”)。

是否有可能做到这一点与CMD文件,或者我需要移动到其他解决scheme(VB.net,…)?

我建议使用嵌入在.cmd中的JScript

@set @tmpvar=1 /* @echo off echo Downloading... call :download "http://download.qt.io/official_releases/jom/jom.zip" || echo Failed echo Downloading using proxy... call :download "http://download.qt.io/official_releases/jom/jom_1_1_1.zip" "206.128.191.77:8008" || echo Failed goto :EOF rem Function :download rem %1 - URL rem %2 - [Proxy] rem %3 - [file name] :download cscript /nologo /e:jscript "%~f0" %* exit /b %ERRORLEVEL% */ function getFileName(uri) { var re = /\/([^?/]+)(?:\?.+)?$/; var match = re.exec(uri); return match != null ? match[1] : "output"; } try { var Source = WScript.Arguments.Item(0); var Proxy = WScript.Arguments.Length > 1 ? WScript.Arguments.Item(1) : ""; var Target = WScript.Arguments.Length > 2 ? WScript.Arguments.Item(2) : getFileName(Source); var Object = WScript.CreateObject('MSXML2.serverXMLHTTP'); if (Proxy.length > 0) { Object.setProxy(2/*SXH_PROXY_SET_PROXY*/, Proxy, ""); } Object.open('GET', Source, false); Object.send(); if (Object.status != 200) { WScript.Echo('Error:' + Object.status); WScript.Echo(Object.statusText); WScript.Quit(1); } var File = WScript.CreateObject('Scripting.FileSystemObject'); if (File.FileExists(Target)) { File.DeleteFile(Target); } var Stream = WScript.CreateObject('ADODB.Stream'); Stream.Open(); Stream.Type = 1/*adTypeBinary*/; Stream.Write(Object.responseBody); Stream.Position = 0; Stream.SaveToFile(Target, 2/*adSaveCreateOverWrite*/); Stream.Close(); } catch (e) { WScript.Echo("--------------------"); WScript.Echo("Error " + (e.number & 0xFFFF) + "\r\n " + e.description.replace(/[\r\n]*$/, "\r\n")); for (var i = 0; i < WScript.Arguments.length; ++i) { WScript.Echo(" arg" + (i+1) + ": " + WScript.Arguments(i)); } WScript.Echo("--------------------"); WScript.Quit(1); }