所以我目前wget
在windows 10 powershell上使用命令来下载各种文件。但是,在测试此命令时,文件实际上并未下载。
例如,假设我想下载一张图像,比如https://picsum.photos/200,我会使用以下命令:
PS C:\Users\myname\Desktop> wget https://picsum.photos/200
它返回一个明显成功的结果:
StatusCode : 200
StatusDescription : OK
Content : {255, 216, 255, 224...}
RawContent : HTTP/1.1 200 OK
Access-Control-Expose-Headers: Content-Length
Content-Disposition: inline;filename=""
Vary: Origin
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-XSS-Protection...
Headers : {[Access-Control-Expose-Headers, Content-Length], [Content-Disposition, inline;filename=""],
[Vary, Origin], [Access-Control-Allow-Origin, *]...}
RawContentLength : 31273
此过程完成后,我在桌面上看不到任何新文件。
但是,这段代码确实有效:
wget https://picsum.photos/200 -O image.jpg
那么发生了什么?为什么wget
单独下载不了文件?
答案1
Powershell 实现wget
不是wget
.因此它的行为与 UNIX/Linux 实用程序不同wget
。
作为指出 由 user4556274 提供,Powershell 使用wget
和curl
作为自己的别名Invoke-WebRequest
。
查看该内容(或Get-Help wget
在 Powershell 下运行),可以看出该-O [filename]
标志是可接受的缩写-Output [filename]
,并且它Invoke-WebRequest [URI]
实际上返回一个表示网页的对象,而不是编写一个根据 URL 的基本名称命名的文件。
因此,除非您将其分配给变量或通过管道将其传递给另一个命令,否则这将返回“无”:
wget http://example.net/path/to/page.html
但这会“按预期”提供一个网页:
wget http://example.net/path/to/page.html -O page.html