从互联网下载文件.
UrlDownloadToFile, URL, Filename
要下载的文件的 URL(统一资源定位符, 可简单理解为网址). 例如, https://someorg.org 可能会获取到该组织的欢迎页面.
下载到文件: 指定要在本地创建的文件名, 如果未指定绝对路径, 则假定在 %A_WorkingDir%. 任何现有的文件会被新文件覆盖.
下载到变量: 请参阅下面的示例.
[v1.1.04+]: 此命令失败时会抛出异常. 想了解更多信息, 请参阅运行时错误.
如果遇到问题则 ErrorLevel 被置为 1, 否则为 0.
甚至在远程文件不存在时, 下载也可能显示成功. 这是因为许多网络服务器会发送错误页面代替缺失的文件. 这个错误页面会代替 Filename 被保存起来.
必须安装 Internet Explorer 3 或更高版本, 此功能才有效. 防火墙或多个网络适配器的存在可能导致此功能失败. 此外, 一些网站可能会拦截这样的下载.
缓存:
*0 https://someorg.org
. 在星号后面的零可以替换为任何有效的 dwFlags 数字; 要了解详情, 请在 www.microsoft.com 中搜索 InternetOpenUrl.https://www.someorg.org/doc.html?fakeParam=42
. 注: 如果您频繁的下载同一个文件, 那么查询字符串应该进行改变.代理: 如果在 Microsoft Internet Explorer(IE 浏览器) 的设置中配置了代理, 那么 UrlDownloadToFile 将使用代理服务器访问网络.
FTP 和 Gopher: [v1.0.48.04+] 支持 FTP(文件传输协议) 和 Gopher 的 URL. 例如:
UrlDownloadToFile, ftp://example.com/home/My File.zip, C:\My Folder\My File.zip ; 匿名登录. UrlDownloadToFile, ftp://user:pass@example.com:21/home/My File.zip, C:\My Folder\My File.zip ; 以指定的用户登录. UrlDownloadToFile, ftp://user:pass@example.com/My Directory, C:\Dir Listing.html ; 获取 HTML 格式的目录列表.
UrlDownloadToFile, https://www.autohotkey.com/download/1.1/version.txt, C:\AutoHotkey Latest Version.txt UrlDownloadToFile, https://someorg.org/archive.zip, C:\SomeOrg's Archive.zip
#2: 下载文本到变量:
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1") whr.Open("GET", "https://www.autohotkey.com/download/1.1/version.txt", true) whr.Send() ; 使用 'true'(上面) 和调用下面的函数, 允许脚本保持响应. whr.WaitForResponse() version := whr.ResponseText MsgBox % version
#3: 发出异步 HTTP 请求.
req := ComObjCreate("Msxml2.XMLHTTP")
; 打开启用异步的请求.
req.open("GET", "https://www.autohotkey.com/download/1.1/version.txt", true)
; 设置回调函数 [需要 v1.1.17+].
req.onreadystatechange := Func("Ready")
; 发送请求. Ready() 将在其完成后被调用.
req.send()
/*
; 如果你要一直等待到下载完毕, 就不需要 onreadystatechange 了.
; 设置 async=true 和像这样等待, 可以在下载过程中允许脚本保留响应
; 而 async=false 将使脚本无响应.
while req.readyState != 4
sleep 100
*/
#Persistent
Ready() {
global req
if (req.readyState != 4) ; 没有完成.
return
if (req.status == 200) ; 完成.
MsgBox % "Latest AutoHotkey version: " req.responseText
else
MsgBox 16,, % "Status " req.status
ExitApp
}