windows 使用powershell中自带的工具(如wget,WebClient等)下载文件
·
系统:win10
powershell 版本:5.1(在终端用$psversiontable查看)
wget(Invoke-WebRequest)
windows的powershell中也有跟linux中同名的wget文件下载工具,只不过powershell中的wget是Invoke-WebRequest命令的别名:
# 利用get-alias命令:
PS D:\> Get-Alias wget
# 输出:
CommandType Name Version Source
----------- ---- ------- ------
Alias wget -> Invoke-WebRequest
而且用法也跟linux下的wget不同。如果只是简单的输入命令:
PS D:\> wget https://github.com/lutzroeder/netron/releases/download/v5.7.0/Netron-Setup-5.7.0.exe
输出的只是解析之后的响应信息以及链接、图像和其他重要 HTML 元素的集合,如:
StatusCode : 200
StatusDescription : OK
Content : {77, 90, 144, 0...}
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
Content-MD5: 4cjz+6tF92ipzKzI992N5w==
x-ms-request-id: becf9f72-101e-0065-0f37-4e8c21000000
x-ms-version: 2020-04-08
x-ms-creation-time: Mon, 11 Apr 2022 01...
Headers : {[Connection, keep-alive], [Content-MD5, 4cjz+6tF92ipzKzI992N5w==], [x-ms-request-id, becf9f72-101e
-0065-0f37-4e8c21000000], [x-ms-version, 2020-04-08]...}
RawContentLength : 118186480
正确用法:
如果要下载文件,需要用命令:
(要注意的是,参数有个是Uri,是Uniform Resource Identifier的缩写,而不是常见的url)
PS D:\> wget -Uri https://github.com/lutzroeder/netron/releases/download/v5.7.0/Netron-Setup-5.7.0.exe -OutFile ./Netron-Setup-5.7.0.exe
# -OutFile后面是下载文件保存的位置
另外,wget还有很多不错的功能,比如,分析一个网页中的所有链接:
PS D:\> (wget -Uri "https://ustc.edu.cn").Links.Href
# 会输出:
http://wlkt.ustc.edu.cn
http://zsb.ustc.edu.cn
http://aga.ustc.edu.cn/
zxss.htm
http://en.ustc.edu.cn/
......
官网文档有更详细的介绍,见参考部分。
附注
如果想要在windows中使用类似linux的wget工具,可以到sourceforge中下载。用法跟linux里的一样
WebClient
简单的使用方法如下:
PS D:\> $download = [System.Net.WebClient]::new()
# 或者是:
PS D:\> $download = New-Object System.Net.WebClient
然后是下载文件:
# 方法是:$download.DownloadFile('path1', 'path2')
PS D:\> $download.DownloadFile('https://github.com/apache/tvm/blob/main/README.md', 'd:\readme.md')
需要注意
的是,这种方法中,路径都需要加上英文符号’或者是",而wget可加可不加;
另外,如果在存储路径,即path2中没有相对路径或者绝对路径的话,会默认下载到用户路径里:c:\users\name
遇到的问题
以上方法有时候下载下来的只是网页信息。比如,从github仓库里下载一个单独的文件,但最后保存的却是整个页面的html信息:
PS D:\> wget -Uri https://github.com/apache/tvm/blob/main/README.md -OutFile readme.md
# 或者是:
PS D:\> $download.DownloadFile('https://github.com/apache/tvm/blob/main/README.md', 'd:\readme.md')
这些方法下载下来的虽然名字都是.md格式的文件,但是内容却都是网页信息:
<!DOCTYPE html>
<html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" >
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://github.githubassets.com">
<link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
<link rel="preconnect" href="https://github.githubassets.com" crossorigin>
<link rel="preconnect" href="https://avatars.githubusercontent.com">
......
在下载.onnx格式的文件的时候出现的也是同样的问题。主要是github仓库里面的文件点击之后不会直接下载,而且先有个预览网页,如需下载还要手动点击:
而且download的链接就是此预览网页的地址,所以最后下载下来的只是此网页的信息。
参考:
更多推荐
已为社区贡献7条内容
所有评论(0)