題 是否可以使用Windows命令行下載?


如果不使用任何非標準(包含Windows)實用程序,是否可以使用Windows命令行下載?

首選版本是Windows XP,但了解更新版本也很有趣。

為了進一步澄清我的問題:

  • 它必須使用HTTP
  • 該文件需要保存
  • 標準的干淨Windows安裝,沒有額外的工具

所以基本上,因為每個人都在尖叫 wget的,我想要簡單的Wget功能,而不使用Wget。


120
2017-10-23 14:58


起源


更多的想法在“如果Windows中唯一的瀏覽器已經死了,如何連接到互聯網?”在 superuser.com/questions/50427/... - Arjan
那十幾個Windows XP版本中會有哪些? - Arjan
假設它可以是任何Windows XP SP2版本,以及稍後發布的所有內容。 - Robert Massa
@arjan有趣的問題,但仍然沒有明確的答案。 - Robert Massa
我應該要求“版本”。像初學者,家庭,專業,媒體中心,平板電腦,甚至可能是嵌入式(我猜的工具有很好的改變!)......或者沒有Windows Media Player的歐洲版本。 :-) - Arjan


答案:


您可以編寫VBScript並從命令行運行它

創建一個文件 downloadfile.vbs 並插入以下代碼行:

' Set your settings
    strFileURL = "http://www.it1.net/images/it1_logo2.jpg"
    strHDLocation = "c:\logo.jpg"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

從命令行運行它,如下所示:

cscript.exe downloadfile.vbs 

50
2017-10-23 15:31



我想知道這是否依賴於Internet Explorer,但我想這對於“如果Windows中唯一的瀏覽器已經死了,如何連接到Internet?”這將是一個很好的答案。在 superuser.com/questions/50427/... :-) - Arjan
如果允許cscript.exe的權限 - hello_there_andy
我可以確認我已經測試了這個腳本 Windows PE 5.1 它的工作就像一個魅力。我打算將它用於離線部署,以便根據存儲在服務器上的文本文件檢查USB驅動器中的平台版本。 - Wayfarer


從Windows 7開始,我相信有一種方法尚未被提及,這很簡單:

句法:

bitsadmin / transfer JOB_NAME       / download / priority 優先    網址   本地\路徑\文件

例:

bitsadmin / transfer mydownloadjob / download / priority normal ^
                  http://example.com/filename.zip C:\ Users \用戶名\下載\ filename.zip

(分為兩個單獨的行 ^ 為了便於閱讀 (以避免滾動)。)

警告: 正如評論中指出的那樣, 該 bitsadmin 幫助信息開頭說:

BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.

...但另一條評論報導它適用於Windows 8。


73
2018-05-16 09:13



它是windows7的一部分。 - akira
在我的Windows 7上沒有工作... - jyz
這應該是最受歡迎的答案。不贊成使用bitsadmin而不支持Windows PowerShell。 - lenkite
確認在Win7上工作 - kaiser
注意: BITSAdmin已棄用,不保證在將來的Windows版本中可用。現在,BITS PowerShell cmdlet提供了BITS服務的管理工具。 - Ujjwal Singh


Windows 7包含PowerShell,而PowerShell幾乎沒有任何功能。

Windows PowerShell中wget的本機替代?


37
2017-10-23 15:27



(New-Object Net.WebClient).DownloadFile('someurl','somepath') - Jason Stangroome
電源外殼 是為了 金剛戰士系列 ! kool是怎麼回事,為什麼我不知道這個?再見 cmd。 - kaiser
來自cmd.exe: powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"。也適用於運行提示 - Janus Troelsen
是的,沒有PowerShell就沒有什麼是你做不到的。這是一個真正的turing tarpit :) - jcarpenter2
@JanusTroelsen我的PowerShell版本回复“術語'iwr'未被識別為cmdlet的名稱,......”但經過一些調查後,這種類似的工作: powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")" - rogerdpack


PowerShell(包含在Windows 8中,包含在早期版本的.NET中)具有此功能。該 powershell 命令允許從命令行或a運行任意PowerShell命令 .bat 文件。因此,以下行是您想要的:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://example.com/', 'c:\somefile') }"

24
2018-05-29 02:22



這不能解決問題。要批評或要求作者澄清,請在帖子下方留言 - 您可以隨時評論自己的帖子,一旦有足夠的評論 聲譽 你將能夠 評論任何帖子。 - harrymc
@harrymc確定這是一個答案。它下載一個文件。你還想要什麼? - Janus Troelsen
(1)一些文本解釋這個單行,(2)驗證你的答案不是以前答案的替代表述,因為如果是,它最多應表達為對該答案的評論。 - harrymc
這需要什麼版本的Windows和PowerShell? - Peter Mortensen
這在Windows Server 2012 FYI中不起作用,它會拋出一個MethodInvocationException - knocte


我找到了一種方法,但實際上,只需安裝即可 wget的

您可以從命令行(iexplore.exe)使用Internet Explorer,然後輸入URL作為參數。所以,運行:

iexplore.exe http://blah.com/filename.zip

無論文件是什麼,您都需要指定它不需要提前確認。瞧,它會自動執行下載。所以是的,這在技術上是可行的,但是好主人以不同的方式做到這一點。


16
2017-10-23 15:12



我知道wget是一種更好的方式,它只是一個假設的問題;)你的答案非常接近,但仍需要用戶干預(點擊“保存”,或配置不顯示此對話框) - Robert Massa
就像我說的那樣,你必須取消選擇提示保存該文件類型的選項。例如,下載zip文件,禁用該提示,然後將來從命令行訪問的任何zip文件將自動保存。 - DHayes
+1,雖然我沒有驗證它有效(但最後的陳述是非常真實的) - Arjan
+1“親愛的主人不要這樣做”...... :) - quack quixote


Windows資源管理器 (不要與Internet Explorer混淆)可以通過HTTP下載文件。只需在地址欄中輸入URL即可。或者從命令行,例如, C:\windows\explorer.exe http://somewhere.com/filename.ext

你得到了經典 文件下載 提示。除非文件是Windows資源管理器知道如何顯示內聯的類型(.html,.jpg,.gif),否則您需要右鍵單擊以保存它。

我剛剛測試了這個 VMware的 Windows XP 2002 SP1的原始安裝的圖像,它工作正常。


11
2017-08-08 15:18



這需要用戶互動。可能不是大多數想要從命令提示符下載文件的人想要的 - Kip
如今,它取決於您的默認瀏覽器。我的是Chrome,它會自動下載到一個已知的位置,所以我認為這個解決方案足以滿足我的需求。謝謝! - kayleeFrye_onDeck


您可以使用(在標準的Windows bat中):

powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"

它似乎需要PowerShell v4 ......

(謝謝 那個評論 和 這個


6
2018-05-10 14:10





使用FTP。

從命令行:

ftp ftp.somesite.com
user
password

FTP包含在我能記住的每個Windows版本中;可能不在3.1中,也許不在 Windows 95的,但在那之後肯定是一切。

@RM:如果你不想下載任何其他工具,那將會非常糟糕。存在命令行 Wget for Windows 和 wget的 旨在完全滿足您的要求。


5
2017-10-23 15:01



+1好答案。 ftp是非常通用的,只要您嘗試下載的服務器支持它。 - DaveParillo
謝謝,抱歉,我沒有更具體,我的意思是使用HTTP。 - Robert Massa
這不適用於大多數FTP服務器,因為此Windows ftp客戶端不支持被動模式(需要在被動模式之間使用NAT)。 - Peter Mortensen
@PeterMortensen它也沒有遠程回答問題,因為他編輯它以指定他正在尋找wget功能。但是,不要讓那些阻止你復活一個7歲的錯誤答案只是為了增加一些迂腐。 - Satanicpuppy


像這樣使用PowerShell:

  1. 創建download.ps1文件:

    param($url, $filename)
    $client = new-object System.Net.WebClient 
    $client.DownloadFile( $url, $filename)
    
  2. 現在您可以下載這樣的文件:

    powershell Set-ExecutionPolicy Unrestricted
    powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://somewhere.com/filename.ext" "d:\filename.ext"
    

3
2018-04-21 21:55



即使在Windows XP 64位PowerShell 2.0上也可以。 - Peter Mortensen