สามารถดาวน์โหลดโดยใช้บรรทัดคำสั่ง Windows ได้หรือไม่


123

หากไม่ใช้ยูทิลิตีที่ไม่ได้มาตรฐาน (รวมอยู่ใน Windows) สามารถดาวน์โหลดโดยใช้บรรทัดคำสั่งของ Windows ได้หรือไม่

รุ่นที่ต้องการคือ Windows XP แต่ก็น่าสนใจเช่นกันสำหรับรุ่นที่ใหม่กว่า

เพื่อชี้แจงคำถามของฉันเพิ่มเติม:

  • มันจะต้องมีการใช้ HTTP
  • ต้องบันทึกไฟล์
  • การติดตั้ง Windows แบบมาตรฐานที่สะอาดไม่มีเครื่องมือพิเศษ

โดยพื้นฐานแล้วเนื่องจากทุกคนกรีดร้องWgetฉันต้องการฟังก์ชั่น Wget ง่าย ๆ โดยไม่ต้องใช้ Wget


6
แนวคิดเพิ่มเติมใน "หากเบราว์เซอร์เดียวใน Windows ตายวิธีเชื่อมต่ออินเทอร์เน็ต" ที่superuser.com/questions/50427/…
Arjan

แล้ว Windows XP รุ่นใดเป็นโหล
Arjan

สมมติว่าเป็น Windows XP SP2 รุ่นใดก็ได้และทุกอย่างจะวางจำหน่ายในภายหลัง
Robert Massa

@ arjan คำถามที่น่าสนใจ แต่ยังไม่มีคำตอบที่ชัดเจน
Robert Massa

ฉันน่าจะถามหา "edition" เช่น Starter, Home, Professional, Media Center, แท็บเล็ตหรือแม้กระทั่งการฝังตัว (การเปลี่ยนแปลงที่ดีสำหรับเครื่องมือที่นั่นฉันเดา!) ... หรือเวอร์ชั่นยุโรปโดยไม่มี Windows Media Player :-)
Arjan

คำตอบ:


51

คุณสามารถเขียน 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 

1
ฉันสงสัยว่าสิ่งนี้ขึ้นอยู่กับ Internet Explorer หรือไม่ แต่ฉันคิดว่านี่จะเป็นคำตอบที่ดีสำหรับ "หากเบราว์เซอร์เดียวใน Windows ตายไปแล้วจะเชื่อมต่ออินเทอร์เน็ตอย่างไร" ที่superuser.com/questions/50427/… :-)
Arjan

นั่นคือถ้าอนุญาตให้ cscript.exe ได้รับอนุญาต
hello_there_andy

ฉันสามารถยืนยันได้ว่าฉันได้ทดสอบสคริปต์นี้ในWindows PE 5.1แล้วและทำงานได้อย่างมีเสน่ห์ ฉันตั้งใจจะใช้มันสำหรับการปรับใช้แบบออฟไลน์เพื่อตรวจสอบเวอร์ชันของแพลตฟอร์มในไดรฟ์ USB กับไฟล์ข้อความที่เก็บไว้บนเซิร์ฟเวอร์
Wayfarer

74

เริ่มจาก Windows 7 ฉันเชื่อว่ามีวิธีการเดียวที่ยังไม่ได้กล่าวถึงนั่นเป็นเรื่องง่าย:

ไวยากรณ์:

bitsadmin / ถ่ายโอนjob_name        / ดาวน์โหลด / ลำดับความสำคัญ   ภายในURL   \ path \ fileลำดับความสำคัญ

ตัวอย่าง:

bitsadmin / โอน mydownloadjob / download / ลำดับความสำคัญปกติ ^
                  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


16
มันเป็นส่วนหนึ่งของ windows7
กิระ

3
ไม่ได้ทำงานบน Windows 7 ของฉัน ...
jyz

3
นี่ควรเป็นคำตอบที่ได้รับการโหวตสูงสุด bitsadmin ถูกคัดค้านใน Windows PowerShell แม้ว่า
lenkite

3
ยืนยันการทำงานกับ Win7
kaiser

7
หมายเหตุ: BITSAdmin เลิกใช้แล้วและไม่รับประกันว่าจะมีใน Windows รุ่นอนาคต เครื่องมือการจัดการสำหรับบริการ BITS ขณะนี้มีให้โดย BITS PowerShell cmdlets
Ujjwal Singh

39

Windows 7 มี PowerShell และไม่มีอะไรที่คุณไม่สามารถทำได้ด้วย PowerShell

ทางเลือกอื่นของ wget ใน Windows PowerShell?


16
(New-Object Net.WebClient) .DownloadFile ('someurl', 'somepath')
Jason Stangroome

3
PowershellสำหรับPowerrangers ! คูลนั้นเป็นอย่างไรและทำไมฉันจึงไม่รู้เรื่องนี้? cmdbyebye
ไกเซอร์

16
จาก powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"cmd.exe: ยังใช้งานได้จากพรอมต์เรียกใช้
Janus Troelsen

1
ใช่ไม่มีอะไรที่คุณทำไม่ได้ถ้าไม่มี PowerShell มันเป็น tarpit จริง ๆ :)
jcarpenter2

@JanusTroelsen รุ่น PowerShell ของฉันตอบว่า "คำว่า 'iwr' ไม่ได้รับการยอมรับว่าเป็นชื่อของ cmdlet, ... " แต่หลังจากการตรวจสอบบางอย่างที่คล้ายกันนี้ก็ใช้งานได้:powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")"
rogerdpack

25

PowerShell (รวมอยู่ใน Windows 8 และมาพร้อมกับ. NET สำหรับรุ่นก่อนหน้า) มีความสามารถนี้ powershellคำสั่งอนุญาตให้ใช้คำสั่ง PowerShell พลจากบรรทัดคำสั่งหรือ.batไฟล์ ดังนั้นบรรทัดต่อไปนี้คือสิ่งที่ต้องการ:

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

2
สิ่งนี้ไม่ได้ให้คำตอบสำหรับคำถาม จะวิจารณ์หรือขอคำชี้แจงจากผู้เขียนแสดงความคิดเห็นด้านล่างโพสต์ของพวกเขา - คุณสามารถแสดงความคิดเห็นในโพสต์ของคุณเองและเมื่อคุณมีเพียงพอชื่อเสียงคุณจะสามารถที่จะแสดงความคิดเห็นในโพสต์ใด
harrymc

3
@harrymc แน่ใจว่ามันเป็นคำตอบ มันดาวน์โหลดไฟล์ คุณต้องการอะไรอีก
Janus Troelsen

1
(1) ข้อความบางส่วนเพื่ออธิบายสิ่งนี้ซับในหนึ่งอัน (2) ตรวจสอบว่าคำตอบของคุณไม่ใช่สูตรทางเลือกสำหรับคำตอบก่อนหน้านี้เพราะถ้าเป็นคำตอบมันควรจะแสดงความคิดเห็นในคำตอบนั้นเป็นส่วนใหญ่
harrymc

ต้องใช้ Windows และ PowerShell เวอร์ชันใดเพื่อให้ทำงานได้
ปีเตอร์มอร์เทนเซ่น

2
สิ่งนี้ไม่สามารถใช้งานได้ใน Windows Server 2012 FYI แต่จะส่ง
เมธอดการลงทะเบียนข้อยกเว้น

17

ผมพบว่าวิธีการทำมัน แต่จริงๆเพียงแค่ติดตั้งWget

คุณสามารถใช้ Internet Explorer จากบรรทัดคำสั่ง (iexplore.exe) แล้วป้อน URL เป็นอาร์กิวเมนต์ ดังนั้นเรียกใช้:

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

ไม่ว่าไฟล์จะเป็นอะไรคุณจะต้องระบุว่าไม่จำเป็นต้องมีการยืนยันล่วงหน้า แท้จริงแล้วมันจะทำการดาวน์โหลดโดยอัตโนมัติ ใช่แล้วเป็นไปได้ทางเทคนิค แต่เจ้านายที่ดีก็ทำในทางที่ต่างออกไป


ฉันรู้ว่า wget เป็นวิธีที่ดีมากก็แค่เป็นคำถามสมมุติ;) คำตอบของคุณมาสวยใกล้ แต่ยังคงต้องมีการแทรกแซงของผู้ใช้ (คลิกที่ปุ่ม "บันทึก" หรือการกำหนดค่าให้ไม่แสดงโต้ตอบนี้)
โรเบิร์ตสซ่า

3
อย่างที่ฉันบอกไปแล้วว่าคุณต้องยกเลิกการเลือกตัวเลือกเพื่อแจ้งให้บันทึกไฟล์ประเภทนั้น ตัวอย่างเช่นดาวน์โหลดไฟล์ zip ปิดใช้งานพรอมต์นั้นจากนั้นในอนาคตไฟล์ zip ที่เข้าถึงจากบรรทัดคำสั่งจะถูกบันทึกโดยอัตโนมัติ
DHayes

1
+1 แต่ผมไม่ได้ตรวจสอบว่าการทำงาน ( แต่คำสั่งสุดท้ายเป็นจริงมาก)
Arjan

1
+1 สำหรับ "เจ้านายที่รักไม่ได้ทำมันด้วยวิธีนี้" ... :)
นักต้มตุ๋น Quixote

12

Windows Explorer (เพื่อไม่ให้สับสนกับ Internet Explorer) สามารถดาวน์โหลดไฟล์ผ่าน HTTP เพียงป้อน URL ลงในแถบที่อยู่ C:\windows\explorer.exe http://somewhere.com/filename.extหรือจากบรรทัดคำสั่งยกตัวอย่างเช่น

คุณได้รับพรอมต์ดาวน์โหลดไฟล์คลาสสิก เว้นแต่ไฟล์นั้นเป็นประเภทที่ Windows Explorer รู้วิธีแสดงแบบอินไลน์ (.html, .jpg, .gif) ซึ่งในกรณีนี้คุณจะต้องคลิกขวาเพื่อบันทึก

ฉันเพิ่งทดสอบสิ่งนี้บนอิมเมจVMwareของฉันซึ่งติดตั้งบริสุทธิ์ของ Windows XP 2002 SP1 และทำงานได้ดี


4
สิ่งนี้ต้องมีการโต้ตอบกับผู้ใช้ อาจจะไม่ใช่สิ่งที่คนส่วนใหญ่ที่ต้องการดาวน์โหลดไฟล์จากพร้อมรับคำสั่งต้องการ
กีบ

ทุกวันนี้มันขึ้นอยู่กับเบราว์เซอร์เริ่มต้นของคุณ Mine เป็นโครเมี่ยมและจะดาวน์โหลดอัตโนมัติไปยังตำแหน่งที่รู้จักดังนั้นฉันจึงพิจารณาโซลูชันนี้ว่าเพียงพอสำหรับความต้องการของฉัน ขอบคุณ!
kayleeFrye_onDeck


6

ใช้ FTP

จากบรรทัดคำสั่ง:

ftp ftp.somesite.com
user
password

เป็นต้น FTP รวมอยู่ใน Windows ทุกรุ่นที่ฉันจำได้ อาจไม่ใช่ใน 3.1 อาจไม่ใช่ในWindows 95แต่แน่นอนว่าทุกอย่างหลังจากนั้น

@RM: มันจะหยาบถ้าคุณไม่ต้องการดาวน์โหลดเครื่องมืออื่น ๆ มีบรรทัดคำสั่งWget สำหรับ WindowsและWgetได้รับการออกแบบมาเพื่อทำสิ่งที่คุณต้องการ


+1 คำตอบที่ดี ftp นั้นค่อนข้างเป็นสากลตราบใดที่เซิร์ฟเวอร์ที่คุณพยายามจะดาวน์โหลดนั้นรองรับ
DaveParillo

ขอบคุณขออภัยฉันไม่เจาะจงมากขึ้นฉันหมายถึงการใช้ HTTP
Robert Massa

1
สิ่งนี้จะไม่ทำงานกับเซิร์ฟเวอร์ FTP ส่วนใหญ่เนื่องจากไม่รองรับโหมดพาสซีฟโดยไคลเอนต์ Windows ftp นี้ (ด้วย NATs ในระหว่างโหมดพาสซีฟจำเป็นต้องมี)
Peter Mortensen

@PeterMortensen นอกจากนี้ยังไม่ตอบคำถามจากระยะไกลเนื่องจากเขาแก้ไขเพื่อระบุว่าเขากำลังมองหาฟังก์ชั่น wget แต่อย่าปล่อยให้สิ่งนี้หยุดคุณจากการที่คำตอบผิดพลาดอายุ 7 ปีขึ้นมาใหม่เพื่อเพิ่มคนอวดบ้าง
Satanicpuppy

4

ใช้ 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"
    

ใช้งานได้แม้ใน Windows XP 64 บิต, PowerShell 2.0
Peter Mortensen

1

หากคุณติดตั้ง Telnet ฉันคิดว่าคุณสามารถส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์เพื่อดาวน์โหลดไฟล์ได้

คุณยังสามารถติดตั้งCygwinและใช้wgetเพื่อดาวน์โหลดไฟล์ได้เช่นกัน นี่เป็นวิธีที่ง่ายมากในการดาวน์โหลดไฟล์จากบรรทัดคำสั่ง


2
ผมค่อนข้างมั่นใจว่า 'cygwin' นับเป็นยูทิลิตี้ที่ไม่ได้มาตรฐาน ;-)
DaveParillo

Telnet เป็นตัวเลือกที่น่าสนใจมีวิธีไพพ์เอาต์พุตกับไฟล์โดยไม่ทำให้เสียหายหรือไม่? และเราสามารถส่งคำสั่ง HTTP GET ไปยัง telnet เพื่อทำการร้องขอได้หรือไม่?
Robert Massa

ติดตั้ง telnet หรือไม่ Telnet เป็นเหมือน ftp; มันมาพร้อมกับ windows ไม่ทราบว่าจะเปลี่ยนเส้นทางผลลัพธ์
Satanicpuppy

สำหรับ XP (ตามคำถาม) มีการติดตั้ง telnet เป็นค่าเริ่มต้น แต่ฉันได้ยินมาว่าใน Vista นั้นไม่มีอีกต่อไปแล้วใช่ไหม แต่ไม่อนุญาตการดาวน์โหลดไฟล์ยกเว้นว่าทั้งหมดจะถูกส่งคืนในการตอบกลับ HTTP เดียวและสามารถดึงส่วนหัวและถอดรหัสเนื้อหาในบรรทัดคำสั่งได้เช่นกัน มีอยู่ไม่มากที่สามารถควบคุมได้
Arjan

1
ทำไมต้องติดตั้ง cygwin เพื่อใช้ wget มีไบนารี win32 ดั้งเดิมอยู่
innaM

1

มีหลายวิธีที่คุณสามารถดาวน์โหลดโดยใช้บรรทัดคำสั่งใน Windows:

  1. คุณสามารถใช้Cygwin

    หมายเหตุ: แอพที่รวมมาไม่ใช่แอพ Linux ทั่วไป คุณต้องสร้างแอปพลิเคชันของคุณใหม่จากแหล่งที่มาหากคุณต้องการเรียกใช้บน Windows

  2. การใช้ telnet เป็นไปได้ที่จะทำการร้องขอ แต่คุณจะไม่เห็นการประมวลผลใด ๆ

  3. คุณสามารถเขียนสคริปต์ bat หรือ VBS

  4. เขียนโปรแกรมของคุณเองที่คุณสามารถเรียกใช้จาก cmd.exe


1

คุณสามารถติดตั้งแอพพลิเคชัน Linux Wget บน Windows ก็สามารถดาวน์โหลดได้จากhttp://gnuwin32.sourceforge.net/packages/wget.htm จากนั้นคุณสามารถออกคำสั่ง 'wget (inserturlhere)' หรือURLอื่น ๆในพรอมต์คำสั่งของคุณและจะช่วยให้คุณดาวน์โหลด URL / ไฟล์ / ภาพนั้น


1
น่าแปลกที่เวอร์ชั่นนี้ใช้ไม่ได้เสมอ บนคอมพิวเตอร์ที่ใช้ Windows 7 ของฉันมันไม่ได้เป็นเพราะห้องสมุดขาดหายไป คุณต้องการใช้ wget โดยไม่มีไลบรารี่ส่วนใหญ่ users.ugent.be/~bpuype/wget
sinni800


0

ในค่าเริ่มต้น Windows คุณไม่สามารถดาวน์โหลดผ่าน HTTP Windows เป็นระบบปฏิบัติการ GUI เป็นศูนย์กลางดังนั้นจึงไม่มีเครื่องมือบรรทัดคำสั่งมากมายที่คุณจะพบในระบบปฏิบัติการอื่นเช่นwgetซึ่งจะเป็นตัวเลือกที่ดีที่สุด

System.Net.WebClient.DownloadFile()ฟังก์ชั่นในWiniNetAPI สามารถดาวน์โหลดไฟล์ได้ แต่ฉันไม่แน่ใจว่าคุณได้พัฒนาไปมากแค่ไหนกับไฟล์แบตช์


ฉันเข้าใจว่าเป็นไปได้ที่จะใช้ wget แต่คำถามของฉันระบุว่าไม่มีการใช้หน้าต่างที่ไม่ได้มาตรฐาน
Robert Massa

0

หากคุณติดตั้งไพ ธ อนเป็นตัวอย่างที่จะดึง get-pip.py จากเว็บ

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.