gut*_*rie 5 windows powershell wget
我运行 wget URL,它在 PowerShell 窗口中提供一个弹出进度条,然后以某种状态(-v 选项)结束,但没有结果文件。
我之前已经看到过多次关于此的讨论,有些说它应该在当前目录中,有些在用户主目录中,有些在 AppData 下的 VirtualStore - 但在这些位置中的任何一个都没有。
这是从 PowerShell 命令窗口运行的 Windows 10。
我的会话(使用假 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
Run Code Online (Sandbox Code Playgroud)
我假设 wget 用作 powershell cmdlet Invoke-WebRequest 的别名。那么这应该工作:
wget -v http://mysystem/image.jpg -outfile c:\temp\image.jpg
Run Code Online (Sandbox Code Playgroud)
很高兴某些 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()
Run Code Online (Sandbox Code Playgroud)
根据下载的内容,类型$ret.Content
可能会有所不同。上面的代码适用于二进制文件。总而言之,使用 -Output 的第一种方法更容易,并且可以为您解决二进制/文本格式问题。
归档时间: |
|
查看次数: |
4367 次 |
最近记录: |