Wget

wget下載後不保存文件

  • October 27, 2018

所以我目前正在使用wgetwindows 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單獨不下載文件?

的 Powershell 實現wget不是wget. 所以它的行為不像 UNIX/Linux 實用程序wget

正如 user4556274所指出wget的,Powershell 使用andcurl作為自己的別名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

引用自:https://unix.stackexchange.com/questions/359972