Laden Sie eine Datei über HTTP von einem Skript in Windows herunter

19

Ich möchte eine Möglichkeit zum Herunterladen einer Datei über HTTP unter Angabe der URL (ähnlich wie bei wget). Ich habe die Antworten auf diese Frage gesehen , habe aber zwei Änderungen an den Anforderungen vorgenommen:

  • Ich möchte, dass es unter Windows 7 oder höher ausgeführt wird (wenn es jedoch unter Windows XP funktioniert, ist das ein Bonus).
  • Ich muss in der Lage sein, dies auf einer Aktienmaschine mit nichts als dem Skript zu tun, das Text sein sollte, der leicht auf einer Tastatur eingegeben oder kopiert / eingefügt werden kann.
  • Je kürzer, desto besser.

Im Grunde möchte ich ein .cmd-Skript (Batch-Skript), ein VBScript- Skript oder ein PowerShell- Skript, mit denen der Download durchgeführt werden kann. Es kann COM verwenden oder Internet Explorer aufrufen, muss jedoch ohne Eingabe ausgeführt werden und sollte sich beim Aufrufen ohne Anzeige (z. B. über eine Telnet- Sitzung) gut verhalten .

Jason R. Coombs
quelle
DLOAD v1.0 ein win32 Kommandozeilen - Tool wie wget superuser.com/a/833445/384998
seizu
Kein Duplikat, da diese Frage speziell nach etwas sucht, das auf einem Aktiencomputer ausgeführt werden kann (ohne zusätzliche Software wie wget für Windows).
Jason R. Coombs
@ JasonR.Coombs Die akzeptierte Antwort ist die gleiche wie eine der Antworten in dieser Frage, sodass der zukünftige Leser nichts mehr bekommt.
Franklin Yu
Genau; An dieser Stelle hat die allgemeinere Frage Vorrang vor dieser.
Jason R. Coombs

Antworten:

16

Wenn Sie über PowerShell> = 3.0 verfügen, können Sie Invoke-WebRequest verwenden :

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

Oder golfen:

iwr -outf su.htm superuser.com
Steven Penny
quelle
2
powershell -command "iwr -outf su.htm superuser.com"
Einzeiler
14

Ich würde BITS ( Primer ) verwenden:

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.

Ab Windows 7 empfiehlt Microsoft , die PowerShell-Cmdlets für BITS zu verwenden.

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

Sie könnten auch BITS über verwenden COM finden Sie hier für ein Beispiel VBScript . Und es gibt ' bitsadmin ', ein Kommandozeilen-Tool zur Steuerung von Downloads:

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

In Windows 7 bitsadmin.exeheißt es selbst, dass es ein veraltetes Tool ist. Dennoch:

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file
Akira
quelle
2
Es scheint nun, dass bitsadmin veraltet ist und in zukünftigen Windows-Versionen möglicherweise nicht mehr enthalten ist.
Jason R. Coombs
@ JasonR.Coombs: Link? Referenz?
Akira
2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... also verwendet man anstelle von "bitadmin.exe" nur Bits-Cmdlets.
Akira
1
Dank dafür. Alles, was ich tun musste, war, dass Bitsadmin mir sagte, es sei veraltet, als ich es laufen ließ.
Jason R. Coombs
Beachten Sie, dass Out-Path vollständig qualifiziert und nicht relativ sein muss (hat tip superuser.com/questions/365755/… )
Matt Wilkie
7

Probieren Sie die Web Client- Klasse aus. Unten auf dieser Seite befindet sich ein PowerShell-Beispielskript :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()
Charles Gargent
quelle
2
Das ist hilfreich. Ich habe festgestellt, dass der WebClient auch eine DownloadFile-Methode hat, mit der der Inhalt direkt in eine Datei heruntergeladen wird. Vielen Dank.
Jason R. Coombs
3

Kopieren Sie die folgenden sechs Zeilen (oder nur die letzten vier Zeilen) und fügen Sie sie in eine Textdatei ein. Benennen Sie es dann in um 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

Natürlich müssen Sie drei Dinge in diesem Skript anpassen, damit es für Sie funktioniert.

  1. Der Teil mit der Aufschrift " http://www.exampleURL.com/FILE.TXT ". Sie müssen die richtige URL für die herunterzuladende Datei eingeben.
  2. Der Befehl, den Sie in der Befehlszeile ausführen, um dieses Skript auszuführen. müssen Sie den richtigen Namen für das Skript angeben vget.vbs, wenn Sie es so genannt haben.
  3. Und der Name FILE.TXT, an den die Ausgabe von einer DOS- Stapelbefehlszeile geleitet werden soll.

Ich habe nur versucht, eine rohe ASCII-Textdatei (ein leistungsfähigeres Cmd-Skript) von meinem Dropbox- Konto herunterzuladen. Daher weiß ich nicht, ob sie für EXE-Dateien usw. funktioniert. oder von anderen Webservern.

Wenn Sie auf die ersten beiden Kommentarzeilen verzichten, sind es nur vier Zeilen. Wenn Sie sich mit VBScript auskennen, können Sie diesen Code möglicherweise sogar in Ihrem Kopf herumtragen und bei Bedarf in die Befehlszeile eingeben. Es enthält nur fünf Schlüsselbefehlskomponenten: CreateObject, .Open, .Send, WScript.Echound .responseText.

ozidroid
quelle