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的链接就是此预览网页的地址,所以最后下载下来的只是此网页的信息。


参考:

microsoft官网文档:Invoke-WebRequest
WebClient Class

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Wget 是一种允许用户从互联网上获取文件的命令行程序,可以通过 Powershell使用它。要使用 Powershell wget,可以在 Powershell 使用 Invoke-WebRequest 命令来下载文件,例如:Invoke-WebRequest -Uri <URL> -OutFile <文件名> ### 回答2: Powershellwget命令是用来从指定的URL下载文件的。它可以用于各种不同的情况和用途,以下是一些使用案例: 1. 下载文件使用wget命令可以轻松地从任意URL下载文件。只需提供文件的URL和保存文件的路径,该命令将自动从URL下载文件并保存到指定的路径。 2. 批量下载文件wget还可以用于批量下载文件,例如从某个网站下载一系列的图片或文档。可以使用循环结构配合wget命令,逐个下载文件并保存到指定位置。 3. 下载并覆盖文件:在某些情况下,可能需要重复下载同一个文件并覆盖已存在的版本。wget命令可以使用"-O"选项来指定文件的保存路径和文件名,以确保每次下载时都会覆盖该文件。 4. 限速下载:有时候需要限制下载速度,以确保不会占用过多网络带宽。wget命令提供了"--limit-rate"选项,可以设置下载速度的上限,使下载过程更加稳定。 5. 下载镜像网站:wget命令还支持下载整个网站的功能,这在需要备份网站内容时非常有用。使用"-r"选项可以递归下载整个网站,并将其保存到本地。 总之,Powershellwget命令是一种强大的工具,可以帮助用户实现各种下载需求。无论是简单的文件下载还是复杂的网站镜像,都可以通过wget命令轻松完成。 ### 回答3: Powershellwget是一个命令行工具,用于在Windows操作系统下载文件。它支持HTTP、HTTPS和FTP等协议,并且具有很多实用的功能。 以下是一些Powershell wget使用案例: 1. 下载文件使用wget命令下载文件非常简单。例如,要下载一个文件,可以使用以下命令: wget https://example.com/file.txt 这将从指定的URL下载file.txt文件并保存在当前目录下。 2. 下载多个文件wget还支持同时下载多个文件。例如,要下载多个文件,可以使用以下命令: wget https://example.com/file1.txt, https://example.com/file2.txt 这将同时从指定的URL下载file1.txt和file2.txt文件并保存在当前目录下。 3. 断点续传:wget还支持断点续传功能,即在下载过程断后可以从断点继续下载。例如,要使用断点续传下载文件,可以使用以下命令: wget -c https://example.com/largefile.zip 这将从指定的URL下载largefile.zip文件,并在断后从上次下载的位置继续下载。 4. 下载到指定目录:除了默认下载到当前目录下,wget还支持将文件下载到指定的目录。例如,要将文件下载到指定目录,可以使用以下命令: wget -P C:\Downloads https://example.com/file.txt 这将从指定的URL下载file.txt文件,并保存在C:\Downloads目录下。 5. 遍历下载wget还支持递归下载,即可以下载整个网站的所有文件。例如,要递归下载整个网站,可以使用以下命令: wget -r https://example.com 这将从指定的URL下载该网站的所有文件,并保存在当前目录下的相应目录结构。 总结起来,Powershellwget命令在Windows操作系统提供了一个简单而强大的工具,用于下载文件。无论是下载单个文件,多个文件,还是递归下载整个网站,都可以通过wget命令轻松实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值