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 .


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:



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

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()

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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.