ดาวน์โหลดไฟล์ผ่าน HTTP จากสคริปต์ใน Windows


19

ฉันต้องการวิธีดาวน์โหลดไฟล์ผ่าน HTTP โดยระบุ URL ของไฟล์นั้น (คล้ายกับวิธีการทำงานของ wget) ฉันได้เห็นคำตอบสำหรับคำถามนี้แต่ฉันมีการเปลี่ยนแปลงข้อกำหนดสองประการ:

  • ฉันต้องการให้ทำงานบน Windows 7 หรือใหม่กว่า (แม้ว่าจะใช้งานได้บน Windows XP นั่นเป็นโบนัส)
  • ฉันต้องสามารถทำสิ่งนี้ได้บนเครื่องที่ไม่มีอะไรนอกจากสคริปต์ซึ่งควรเป็นข้อความที่สามารถป้อนได้อย่างง่ายดายบนแป้นพิมพ์หรือคัดลอก / วาง
  • ยิ่งสั้นยิ่งดี

โดยพื้นฐานแล้วฉันต้องการสคริปต์. cmd (แบทช์), VBScriptหรือสคริปต์PowerShellที่สามารถดาวน์โหลดได้สำเร็จ มันสามารถใช้COMหรือเรียกใช้ Internet Explorer แต่ต้องทำงานโดยไม่ต้องป้อนข้อมูลใด ๆ และควรทำงานได้ดีเมื่อเรียกใช้โดยไม่แสดงผล (เช่นผ่านเซสชันTelnet )


dload v1.0 เครื่องมือบรรทัดคำสั่ง win32 เช่น wget superuser.com/a/833445/384998
seizu


ไม่ใช่คำถามที่ซ้ำกันเพราะคำถามนี้กำลังมองหาบางสิ่งที่จะทำงานบนเครื่องหุ้นโดยเฉพาะ (ไม่มีซอฟต์แวร์เพิ่มเติมเช่น wget สำหรับ Windows)
Jason R. Coombs

@ JasonR.Coombs คำตอบที่ได้รับการยอมรับนั้นเหมือนกับคำตอบหนึ่งในคำถามนั้นดังนั้นผู้อ่านในอนาคตจะไม่ได้อะไรมาก
Franklin Yu

ฉันเห็นด้วย; ณ จุดนี้คำถามทั่วไปมากกว่านี้
Jason R. Coombs

คำตอบ:



14

ฉันจะใช้BITS ( ไพรเมอร์ ):

Background Intelligent Transfer Service (BITS) is a component of modern
Microsoft Windows operating systems that facilitates prioritized,
throttled, and asynchronous transfer of files between machines using
idle network bandwidth.

เริ่มต้นด้วย Windows 7 Microsoft แนะนำให้ใช้ PowerShell cmdletsสำหรับ BITS

% import-module bitstransfer
% Start-BitsTransfer http://path/to/file C:\Path\for\local\file

นอกจากนี้คุณยังสามารถใช้ BITS ผ่านCOMดูที่นี่สำหรับตัวอย่างVBScript และมี ' bitsadmin ' ซึ่งเป็นเครื่องมือ commandline เพื่อควบคุมการดาวน์โหลด:

BITSAdmin is a command-line tool that you can use to create download or
upload jobs and monitor their progress.

ใน Windows 7 bitsadmin.exeระบุว่าเป็นเครื่องมือที่เลิกใช้แล้ว แต่ถึงอย่างไร:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file

2
จะปรากฏขึ้นในขณะนี้ที่ bitsadmin เลิกใช้แล้วและอาจไม่รวมอยู่ใน Windows รุ่นอนาคต
Jason R. Coombs

@ JasonR.Coombs: ลิงค์? อ้างอิง?
กิระ

2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... ดังนั้นแทนที่จะเป็น "bitadmin.exe" เพียงแค่ใช้ bits-cmdlets
กิระ

1
ขอบคุณสำหรับสิ่งนั้น สิ่งที่ฉันต้องทำต่อไปคือ bitsadmin กำลังบอกฉันว่ามันเลิกใช้แล้วเมื่อฉันวิ่ง
Jason R. Coombs

โปรดทราบว่า out-path จะต้องผ่านการรับรองโดยสมบูรณ์และไม่เกี่ยวข้อง (hat tip superuser.com/questions/365755/… )
matt wilkie

7

ลองใช้คลาสไคลเอนต์เว็บ มีสคริปต์ PowerShell ตัวอย่างที่ด้านล่างของหน้านี้ :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()

2
สิ่งนี้มีประโยชน์ ฉันพบ WebClient ก็มีวิธี DownloadFile ซึ่งจะดาวน์โหลดเนื้อหาไปยังไฟล์โดยตรง ขอบคุณ
Jason R. Coombs

3

คัดลอกและวางหกบรรทัดต่อไปนี้ (หรือสี่บรรทัดสุดท้าย) ลงในไฟล์ข้อความ vget.vbsแล้วเปลี่ยนชื่อเป็น

'cscript vget.vbs >FILE.TXT
'Run this vbscript at command line. Use above syntax to download/create FILE.TXT
Set oX = CreateObject("Microsoft.XmlHTTP")
oX.Open "GET", "http://www.exampleURL.com/FILE.TXT", False
oX.Send ""
WScript.Echo oX.responseText

แน่นอนคุณต้องกำหนดสามสิ่งในสคริปต์นี้เพื่อให้เหมาะกับคุณ

  1. ส่วนที่ระบุว่า " http://www.exampleURL.com/FILE.TXT " คุณจะต้องแทนที่ URL ที่ถูกต้องสำหรับไฟล์ที่คุณต้องการดาวน์โหลด
  2. คำสั่งที่คุณจะรันที่บรรทัดคำสั่งเพื่อรันสคริปต์นี้ จะต้องระบุชื่อที่ถูกต้องสำหรับสคริปต์vget.vbsหากนั่นคือสิ่งที่คุณเรียกว่า
  3. และชื่อFILE.TXTที่คุณต้องการให้ส่งออกไปยังบรรทัดคำสั่งแบทช์DOS

ฉันเพิ่งลองใช้สิ่งนี้เพื่อดาวน์โหลดไฟล์ข้อความ ASCII แบบดิบ (สคริปต์ cmd ที่มีประสิทธิภาพยิ่งขึ้น) จากบัญชีDropboxของฉันดังนั้นฉันจึงไม่รู้ว่ามันจะทำงานกับไฟล์ EXE หรือไม่; หรือจากเว็บเซิร์ฟเวอร์อื่น ๆ

หากคุณแจกจ่ายด้วยสองบรรทัดแรกความคิดเห็นจะมีความยาวเพียงสี่บรรทัด หากคุณรู้วิธีการใช้งานVBScriptคุณยังสามารถพกรหัสนี้ไปไว้ในหัวของคุณและพิมพ์ลงในบรรทัดคำสั่งได้ตามต้องการ มันมีเพียงห้าองค์ประกอบคำสั่งสำคัญ: CreateObject, .Open, .Send, และWScript.Echo.responseText


1

นี่คือความพยายามของฉันที่จะใช้วิธีการดาวน์โหลดไฟล์บน Windows โดยไม่ต้องใช้เครื่องมือภายนอก

มันมี BITSADMIN, Microsoft.XmlHTTP และ WinHTTP พร้อมกับชุดสคริปต์ไฮบริด / JScriptที่ไม่ต้องการไฟล์ temp และ System.Net.WebClinet ด้วยไฮบริดที่รวบรวมด้วยตนเอง jscript.net

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.