題 如何從Windows中的命令行下載文件,如wget或curl


如何在沒有Internet Explorer或Firefox打開Acrobat Reader / Quicktime / MS Word /其他內容的情況下直接從網上下載內容?

我正在使用Windows,所以是Windows版本的 wget的 會做。


295


起源


只需右鍵單擊文件並點擊“目標另存為”或“另存為”或“另存為”(語言因瀏覽器而異)將起作用。 - BrainSlugs83
擁有命令的關鍵是能夠隨時編寫批處理文件並運行它(可能作為任務安排)。這就是GUI不足的地方。 - Jbm
你如何用MS Word下載? - Jaime Hablutzel
@JaimeHablutzel為什麼你想通過MS Word下載一些東西? MS Word不是終端。 - Braden Best
@SDsolar或只是upvote /改進 這個答案 下面。 - Franklin Yu


答案:


Wget for Windows 應該管用。

來自 Wget Wiki常見問題解答

GNU Wget是一個免費的網絡實用程序,用於從World檢索文件   Wide Web使用HTTP和FTP,這兩種使用最廣泛的Internet   協議。它以非交互方式工作,從而實現了工作   退出後的背景。

這部分FAQ,建議下載鏈接:

Windows二進製文件

使用與JernejSimončič禮貌的聯繫。


161



還有Winwget cybershade.us/winwget 如果你喜歡gui - Col
獨立版本可從中下載 這個鏈接。 - Vito Gentile
更新,甚至是最新的(截至今天) Windows構建,由JernejSimončič提供 - Gras Double
@cixelsyd更新了替代來源的鏈接。 - clearkimura
eternallybored.org/misc/wget/在我的系統上被企業防病毒軟件標記。炭黑/比特9.可能是假陽性。但是sourceforge運行了。不支持sslv3。 - TamusJRoyce


我最近使用PowerShell發現的另一種選擇:

$client = new-object System.Net.WebClient
$client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt")

它與GET查詢一樣有效。

如果需要指定憑據以下載文件,請在兩者之間添加以下行:

$client.Credentials =  Get-Credential                

將彈出標準的Windows憑據提示。您在此處輸入的憑據將用於下載文件。您只需要在使用$ client對象的所有時間執行此操作。


279



你也可以一行完成: (new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt') - schellack
@Rob powershell內置於Windows ... - nhinkle♦
從Vista開始,是的。 - Arran
@ BrainSlugs83,絕對,但很多, 許多,人們還在使用XP。這只是要記住的事情。 - Arran
@ BrainSlugs83,你低估了舊版Windows系統上的人數。我不明白這個問題,我指出它只在Vista上面。人們可以選擇忽略它,或者說“嘿謝謝!”,但是你......?如果您有問題,請創建聊天,我們可以聊聊。有代表的人(像你一樣)應該意識到 這裡 不是討論的地方。 - Arran


如果你有PowerShell> = 3.0,你可以使用 調用-的WebRequest

Invoke-WebRequest -OutFile index.html http://superuser.com

或者打高爾夫球

iwr -outf index.html http://superuser.com

在Windows中通過HTTP下載文件


65



這不適用於sourceforge(可能還有其他網站)上的重定向,而不是 System.Net.WebClient。但是你可以做 Invoke-WebRequest 通過添加工作 -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox。 - Ela782
現在這是正確的答案,@CédricBelin是對的。問題和接受的答案都很古老。 - Factor Mystic
要從cmd終端運行此命令: powershell -command "& {&'iwr' index.html http://superuser.com}" - dario_ramos
有沒有選項可以看到下載的進度? - Franklin Yu
@FranklinYu如果文件足夠大,將顯示進度 - Steven Penny


Windows有自己的命令行下載實用程序 - 的bitsadmin

BITSAdmin是一個命令行工具,可用於創建下載   或上傳工作並監控他們的進度。

編輯15年1月26日  - 這是我在沒有外部工具的情況下如何在Windows上下載文件的概述 

一個完整的bitsadmin示例:

bitsadmin /transfer myDownloadJob /download /priority normal http://downloadsrv/10mb.zip c:\10mb.zip

編輯 : 2018年5月15日  - 結果證明可以下載一個 文件與certutil一樣

certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.zip" pstools.zip

默認情況下,在XP / Win2003上沒有安裝Certutil,但在較新的Windows版本上可以使用Certutil。對於XP / 2003,您需要 適用於Windows Server 2003的管理工具包


42



有趣。與wget相比,這是一個笨拙的軟件。 - Matt H
請注意,它不隨Windows XP一起提供,也可能不與其他版本一起提供。 - Ian Dunn
更新:BITSAdmin已棄用,不保證在將來的Windows版本中可用。現在,BITS PowerShell cmdlet提供了BITS服務的管理工具。 - nulldev07
@MattH:因為它首先被認為是wge​​t? - 看 en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service - peterchen
無法添加文件 - 0x80070057 - Tomáš Zato


將以下文本另存為 wget.js 並簡單地打電話

cscript /nologo wget.js http://example.com

這是代碼:

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false);
WinHttpReq.Send();
WScript.Echo(WinHttpReq.ResponseText);

/* To save a binary file use this code instead of previous line
BinStream = new ActiveXObject("ADODB.Stream");
BinStream.Type = 1;
BinStream.Open();
BinStream.Write(WinHttpReq.ResponseBody);
BinStream.SaveToFile("out.bin");
*/

28



這個腳本用什麼語言?對我當前的任務看起來很有用。我想找到更多參考文檔。看起來不像vb - G-.
對單個文件很有用。需要增強遞歸下載和https。 - opticyclic
@G-。我遲到了,但這是JavaScript。 - prooffreader
我試著這樣做 database.clamav.net/daily.cvd,但它只下載了88kB的44MB :( - kokbira


我製作了一個快速myGet.bat文件,該文件調用上面描述的PowerShell方法。

@Echo OFF
SetLocal EnableDelayedExpansion
Set Var=%1
Set Var=!Var:http://=!
Set Var=!Var:/=,!
Set Var=!Var:%%20=?!
Set Var=!Var: =?!
Call :LOOP !var!
Echo.Downloading: %1 to %~p0!FN!
powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('%1','%~p0!FN!')
GoTo :EOF
:LOOP
If "%1"=="" GoTo :EOF
Set FN=%1
Set FN=!FN:?= !
Shift
GoTo :LOOP

我從中藉了一些代碼 解析帶空格的文件名的URL


17



為什麼要downvote?這對我來說沒問題,是對這個問題的直接回應。是的,它很笨重,可以使用改進,比如在網址中轉發&符號(&),但它可以正常工作。 - matt wilkie


有一個Windows的本機cURL可用 這裡。有許多口味可供選擇 - 有和沒有SSL支持。

你不需要額外的行李 Cygwin的 和喜歡,只是一個小的EXE文件。


知道兩者都很重要也很重要 wget 和 curl 所有現代版本的Windows Powershell中都內置了別名。它們是等價的。

無需額外的文件或下載 wget功能:

在Powershell中使用Curl (Sociable Geek)

摘抄:

您可以輸入cURL命令,例如從a下載文件的命令   GitHub存儲庫。

捲曲 http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

看起來它會起作用,但它實際上做的只是   使用cURL作為別名。在上面的例子中,會發生什麼   您只需獲取標題而不是文件本身。

PowerShell中的別名允許您為較長的命令創建快捷方式,因此您無需一直鍵入它們。

如果您輸入命令Get-Alias,它將為您提供PowerShell中使用的所有別名的列表。如您所見,curl命令只調用Invoke-WebRequest命令。它們相似但不相同,這就是上述請求對我們不起作用的原因。

enter image description here

要在PowerShell中正常工作,最簡單的方法是使用變量和 -OutFile 參數如下所示:

enter image description here

(文件名在圖像中被截斷“https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json“)

此語法將下載目標文件的完整內容 azuredeploy.json 到本地文件 newfile.json


它的主要優點是它內置於Powershell本身,因此該代碼將直接執行,無需下載或任何其他額外的文件創建,以使其適用於任何現代版本的Windows。


15



這可以直接在一條線上完成,但是這條線變得非常長,並且不會立即可讀。 - SDsolar
最好的方式,謝謝 - Konstantin Chernov


我正在尋找相同的,因為我沒有權限安裝任何上述軟件包,我去了一個小的解決方法(下載30 +文件):

  • 我創建了一個批處理文件
  • 列出所有文件
  • firefox.exe 在每一行的開頭
  • 去了firefox目錄 Program Files
  • 跑吧。

8





如果 電源外殼 是一個選項,這是首選路由,因為您(可能)不必安裝任何額外的東西:

(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')

如果不這樣做,正如其他人所指出的那樣,Wget for Windows絕對是第二個最佳選擇。正如另一個答案中所述,它看起來像你可以 單獨下載Wget,或者你可以抓住它作為一部分 Cygwin的 要么 MSys的

如果由於某種原因,您發現自己陷入時間扭曲,使用沒有PowerShell的機器  您無法訪問正在運行的Web瀏覽器(即Internet Explorer是系統中唯一的瀏覽器,其設置已損壞),並且您的文件位於FTP站點(而不是HTTP):

start->run "FTP", press "OK".

如果內存服務它自從Windows 98以來一直存在,我可以確認它仍然存在於Windows 8 RTM中(你可能需要進入 appwiz.cpl 並添加/刪除功能以獲得它)。該實用程序可以在Web上的FTP站點下載和上載文件。 它也可以在腳本中用於自動執行任一操作。

這個內置的工具過去對我來說是一個真正的救命工作,特別是在ftp.cdrom.com的時代 - 我曾經在一台只有撥號上網的完全損壞的機器上下載過一次Firefox連接(當sneakernet的最大數據包大小仍為1.44 MB時,返回時,Firefox仍被稱為“Netscape” /我做了trollface)。

一些提示:它是自己的命令處理器,它有自己的語法。嘗試輸入“幫助”。所有FTP站點都需要用戶名和密碼;但如果他們允許“匿名”用戶,則用戶名是“匿名”,密碼是您的電子郵件地址(如果您不想被跟踪,可以填寫一個,但通常有某種邏輯可以確保它是有效的電子郵件地址)。


3



+1用於思考命令行ftp!然而wget和powershell在你加入聚會之前都被提到了,所以-1在那裡。 : - / - matt wilkie
我看到的其他powershell答案都是多線程和/或有一些代碼味道 - 這是一個簡短的單行程序來下載文件。 - 我還想提供涵蓋所有基礎的答案。 :-) - BrainSlugs83
我不確定為什麼目標文件中有兩個問號 C:\tmp\file.tx??t - Ploni


Cygwin的 有Wget(以及更多實用程序)。


3





http://www.httrack.com/ 有一個很好的GUI(並且它是免費的),用於鏡像站點。它還有一個Linux版本。


2