Tải xuống tệp qua HTTP từ tập lệnh trong Windows


19

Tôi muốn một cách để tải xuống một tệp qua HTTP được cung cấp URL của nó (tương tự như cách hoạt động của wget). Tôi đã thấy câu trả lời cho câu hỏi này , nhưng tôi có hai thay đổi đối với các yêu cầu:

  • Tôi muốn nó chạy trên Windows 7 trở lên (mặc dù nếu nó hoạt động trên Windows XP, đó là một phần thưởng).
  • Tôi cần có thể làm điều này trên một máy chứng khoán không có gì ngoài tập lệnh, đó phải là văn bản có thể dễ dàng nhập trên bàn phím hoặc sao chép / dán.
  • Càng ngắn, càng tốt.

Vì vậy, về cơ bản, tôi muốn một tập lệnh .cmd (batch), VBScript hoặc PowerShell có thể thực hiện việc tải xuống. Nó có thể sử dụng COM hoặc gọi Internet Explorer, nhưng nó cần chạy mà không cần bất kỳ đầu vào nào và sẽ hoạt động tốt khi được gọi mà không có màn hình (chẳng hạn như thông qua phiên Telnet ).


tải v1.0 một công cụ dòng lệnh win32 như wget superuser.com/a/833445/384998
seizu


Không phải là một bản sao vì câu hỏi này đặc biệt tìm kiếm thứ gì đó sẽ chạy trên máy chứng khoán (không có phần mềm bổ sung, chẳng hạn như wget cho Windows).
Jason R. Coombs

@ JasonR.Coombs Câu trả lời được chấp nhận giống như một trong những câu trả lời trong câu hỏi đó, vì vậy người đọc trong tương lai không nhận được gì thêm.
Franklin Yu

Tôi đồng ý; tại thời điểm này, câu hỏi tổng quát hơn thay thế câu hỏi này.
Jason R. Coombs

Câu trả lời:


16

Nếu bạn có PowerShell> = 3.0, bạn có thể sử dụng Invoke-WebRequest :

Invoke-WebRequest -OutFile su.htm -Uri superuser.com

Hoặc chơi gôn:

iwr -outf su.htm superuser.com

2
Một lớp lót từ dấu nhắc cmd thông thường:powershell -command "iwr -outf su.htm superuser.com"
valiano

14

Tôi sẽ sử dụng BITS ( mồi ):

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.

Bắt đầu với Windows 7, Microsoft khuyên bạn nên sử dụng các lệnh ghép ngắn PowerShell cho BITS.

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

Bạn cũng có thể sử dụng BITS qua COM , xem tại đây để biết ví dụ về VBScript . Và có ' bitsadmin ', một công cụ dòng lệnh để kiểm soát tải xuống:

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

Trong Windows 7 bitsadmin.exetuyên bố rằng nó là một công cụ không dùng nữa. Tuy nhiên:

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

2
Bây giờ có vẻ như bitadmin không được dùng nữa và có thể không được bao gồm trong các phiên bản Windows trong tương lai.
Jason R. Coombs

@ JasonR.Coombs: liên kết? tài liệu tham khảo?
akira

2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... vì vậy, thay vì "bitadmin.exe" người ta chỉ sử dụng các bit-cmdlets.
akira

1
cảm ơn vì điều đó. Tất cả những gì tôi phải tiếp tục là bitsadmin nói với tôi rằng nó không được dùng nữa khi tôi chạy nó.
Jason R. Coombs

lưu ý rằng đường ra phải có đủ điều kiện và không tương đối (mũ hat superuser.com/questions/365755/iêu )
matt wilkie

7

Hãy thử lớp Web Client . Có một mẫu PowerShell script ở dưới cùng của này trang:

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

2
Điều này rất hữu ích. Tôi thấy WebClient cũng có phương thức DownloadFile, sẽ tải nội dung trực tiếp vào một tệp. Cảm ơn.
Jason R. Coombs

3

Sao chép và dán sáu dòng sau (hoặc chỉ bốn dòng cuối cùng) vào một tệp văn bản. Sau đó đổi tên thành 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

Rõ ràng bạn cần tùy chỉnh ba điều trong kịch bản này để làm cho nó hoạt động cho bạn.

  1. Phần có nội dung " http://www.exampleURL.com/FILE.TXT ". Bạn sẽ cần phải thay thế URL chính xác cho tệp bạn muốn tải xuống.
  2. Lệnh bạn sẽ chạy ở dòng lệnh để thực thi tập lệnh này; sẽ cần chỉ định tên chính xác cho tập lệnh vget.vbs, nếu đó là tên bạn gọi.
  3. Và tên FILE.TXTmà bạn muốn đầu ra được hướng đến bởi một dòng lệnh hàng loạt DOS .

Tôi chỉ thử sử dụng cách này để tải xuống tệp văn bản ASCII thô (tập lệnh cmd mạnh hơn) từ tài khoản Dropbox của mình, vì vậy tôi không biết liệu nó có hoạt động cho các tệp EXE hay không, v.v.; hoặc từ các máy chủ web khác.

Nếu bạn phân phối với hai dòng nhận xét đầu tiên, nó chỉ dài bốn dòng. Nếu bạn biết cách của mình xung quanh VBScript, bạn thậm chí có thể mang mã này trong đầu và nhập mã đó vào dòng lệnh khi cần. Nó chỉ có năm thành phần lệnh chính: CreateObject, .Open, .Send, WScript.Echo.responseText.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.