Pobierz plik przez HTTP ze skryptu w systemie Windows

19

Chcę sposób pobrać plik przez HTTP, biorąc pod uwagę jego adres URL (podobny do działania wget). Widziałem odpowiedzi na to pytanie , ale mam dwie zmiany w wymaganiach:

  • Chciałbym, aby działał w systemie Windows 7 lub nowszym (choć jeśli działa w systemie Windows XP, to bonus).
  • Muszę być w stanie to zrobić na standardowej maszynie, używając tylko skryptu, który powinien być tekstem, który można łatwo wprowadzić na klawiaturze lub skopiować / wkleić.
  • Im krótszy, tym lepiej.

Zasadniczo chciałbym skrypt .cmd (wsadowy), VBScript lub PowerShell, który może wykonać pobieranie. Może używać COM lub wywoływać Internet Explorera, ale musi działać bez żadnych danych wejściowych i powinien zachowywać się dobrze, gdy zostanie wywołany bez wyświetlania (na przykład przez sesję Telnet ).

Jason R. Coombs
źródło
dload v1.0 narzędzie wiersza poleceń win32, takie jak wget superuser.com/a/833445/384998
seizu
Nie duplikat, ponieważ to pytanie dotyczy konkretnie czegoś, co będzie działać na maszynie giełdowej (bez dodatkowego oprogramowania, takiego jak wget dla Windows).
Jason R. Coombs
@ JasonR.Coombs Akceptowana odpowiedź jest taka sama jak jedna z odpowiedzi na to pytanie, więc przyszły czytelnik nie otrzymuje nic więcej.
Franklin Yu,
Zgadzam się; w tym momencie bardziej ogólne pytanie zastępuje to.
Jason R. Coombs

Odpowiedzi:

16

Jeśli masz PowerShell> = 3.0, możesz użyć Invoke-WebRequest :

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

Lub grał w golfa:

iwr -outf su.htm superuser.com
Steven Penny
źródło
2
One-liner ze zwykłego polecenia cmd:powershell -command "iwr -outf su.htm superuser.com"
valiano
14

Chciałbym użyć BITS ( podkład ):

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.

Począwszy od systemu Windows 7, Microsoft zaleca używanie poleceń cmdlet programu PowerShell dla usługi BITS.

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

Możesz także użyć BITS przez COM , patrz tutaj na przykład VBScript . Jest też „ bitsadmin ”, narzędzie wiersza poleceń do kontroli pobierania:

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

W systemie Windows 7 bitsadmin.exestwierdza się, że jest to przestarzałe narzędzie. Niemniej jednak:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file
akira
źródło
2
Wydaje się teraz, że program bitsadmin jest przestarzały i może nie zostać uwzględniony w przyszłych wersjach systemu Windows.
Jason R. Coombs
@ JasonR.Coombs: link? odniesienie?
akira
2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... więc zamiast „bitadmin.exe” używa się tylko cmdletów bitowych.
akira
1
Dziękuję za to. Musiałem tylko powiedzieć, że bitsadmin powiedział mi, że to przestarzałe, kiedy go uruchomiłem.
Jason R. Coombs
zwróć uwagę, że out-path musi być w pełni wykwalifikowany, a nie względny (czapka superuser.com/questions/365755/… )
Matt Wilkie
7

Wypróbuj klasę klienta WWW . Na dole tej strony znajduje się przykładowy skrypt PowerShell :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()
Charles Gargent
źródło
2
To jest pomocne. Odkryłem, że WebClient ma również metodę DownloadFile, która pobierze zawartość bezpośrednio do pliku. Dzięki.
Jason R. Coombs
3

Skopiuj i wklej następujące sześć wierszy (lub tylko ostatnie cztery wiersze) do pliku tekstowego. Następnie zmień nazwę na 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

Oczywiście musisz dostosować trzy elementy w tym skrypcie, aby działał dla Ciebie.

  1. Część z napisem „ http://www.exampleURL.com/FILE.TXT ”. Konieczne będzie zastąpienie poprawnego adresu URL plikiem, który chcesz pobrać.
  2. Polecenie, które uruchomisz w wierszu poleceń, aby wykonać ten skrypt; będzie musiał podać poprawną nazwę skryptu vget.vbs, jeśli tak go nazwałeś.
  3. I nazwa FILE.TXT, na którą chcesz skierować dane wyjściowe za pomocą wiersza poleceń wsadowego DOS .

Próbowałem tego użyć tylko do pobrania surowego pliku tekstowego ASCII (mocniejszego skryptu cmd) z mojego konta Dropbox , więc nie wiem, czy będzie działać dla plików EXE itp .; lub z innych serwerów internetowych.

Jeśli zrezygnujesz z pierwszych dwóch wierszy komentarza, ma on tylko cztery wiersze. Jeśli znasz się na VBScript , być może będziesz w stanie przenosić ten kod w swojej głowie i wpisywać go w wierszu poleceń w razie potrzeby. Zawiera on tylko pięć kluczowych składników polecenie: CreateObject, .Open, .Send, WScript.Echoi .responseText.

ozidroid
źródło