在 Windows 10 上找不到 Wget 的输出

在 Windows 10 上找不到 Wget 的输出

我运行 wget URL,它在 PowerShell 窗口中弹出一个进度条,然后以某些状态(-v 选项)结束,但没有结果文件。

我之前已经看到过关于此问题的多个讨论,有的人说它应该在当前目录中,有的人说它应该在用户主目录中,有的人说它应该在 AppData 下的 VirtualStore 中 - 但这些位置中都没有。

这是 Windows 10,从 PowerShell 命令窗口运行。

我的会话(使用虚假 URL):

PS P:\ftp> wget -v  http://mysystem/image.jpg
VERBOSE: GET http://mysystem/image.jpg with 0-byte payload
VERBOSE: received 70544-byte response of content type image/jpeg


StatusCode        : 200
StatusDescription : OK
Content           : {255, 216, 255, 224...}
RawContent        : HTTP/1.1 200 OK
                    Keep-Alive: timeout=5, max=100
                    Connection: Keep-Alive
                    Accept-Ranges: bytes
                    Content-Length: 70544
                    Content-Type: image/jpeg
                    Date: Sun, 03 Mar 2019 02:09:03 GMT
                    ETag: "11390-531efc...
Headers           : {[Keep-Alive, timeout=5, max=100], [Connection, Keep-Alive], [Accept-Ranges, bytes],
                    [Content-Length, 70544]...}
RawContentLength  : 70544

答案1

我假设 wget 被用作 powershell cmdlet Invoke-WebRequest 的别名。那么这应该可以工作:

wget -v  http://mysystem/image.jpg -outfile c:\temp\image.jpg

一些 PS cmdlet 的别名与提供相同功能的 *nix 命令相同,这很好。但有时它会导致混淆,就像这里一样。您在这里没有运行 wget,而是运行 Invoke-WebRequest,它非常相似但不完全相同。

编辑

回复您的评论:您帖子中的代码下载文件,但将其保存在WebResponseObject返回的 .content 属性的内存中。甚至可以从返回的对象中保存文件。像这样:

$ret = wget -v  http://mysystem/image.jpg
$file = [System.IO.FileStream]::new('C:\temp\image.jpg', [System.IO.FileMode]::Create)
$file.write($ret.Content, 0, $ret.Content.Length)
$file.close()

根据下载的内容,类型$ret.Content可能会有所不同。上述代码适用于二进制文件。总而言之,使用 -Output 的第一种方法更简单,并为您解决了二进制/文本格式问题。

相关内容