So laden Sie Dateien von der Befehlszeile in Windows herunter, z. B. wget oder curl

813807
Paolo Tedesco

Wie kann ich direkt aus dem Internet etwas herunterladen, ohne dass Internet Explorer oder Firefox den Acrobat Reader / Quicktime / MS Word / was auch immer öffnen?

Ich verwende Windows, also eine Windows-Version von Wget .

295
Klicken Sie einfach mit der rechten Maustaste auf eine Datei und klicken Sie auf "Ziel speichern unter" oder "Link speichern unter" oder "Speichern unter" (die Sprache hängt von Ihrem Browser ab). BrainSlugs83 vor 11 Jahren 0
Wenn Sie einen Befehl haben, können Sie eine Batchdatei schreiben und ausführen (möglicherweise als Task geplant), wann immer Sie möchten. Da fehlt die GUI. Jbm vor 11 Jahren 20
Wie können Sie mit MS Word herunterladen? Jaime Hablutzel vor 9 Jahren 3
@JaimeHablutzel Warum möchten Sie jemals etwas über MS Word herunterladen? MS Word ist kein Terminal. Braden Best vor 8 Jahren 5
@ B1KMusic Blick auf die ursprüngliche Frage, ich hatte den gleichen Zweifel wie Sie Jaime Hablutzel vor 8 Jahren 0
Wenn ein Popup-Dialog für "Ziel / Öffnen" in Ordnung ist, der vom "Auto-Open-Closed" -Internet Explorer stammt, können Sie "% programfiles% / Internet Explorer / iexplore.exe" verwenden. http: // foo.bar / somefile` ( sollte auf vielen Systemen funktionieren) Andreas Dietrich vor 7 Jahren 0
Es ist 2016 - stellen Sie sicher, dass Sie zu den Antworten scrollen, die "Powershell" sagen. (Genau die integrierte Lösung, die Sie benötigen, wenn Sie im IE eingeschränkt sind und keine zufälligen Dateien auf den Servern eines Clients installieren möchten ...) mwardm vor 7 Jahren 0
Hier ist ein guter Artikel zur Verwendung von curl in PowerShell: http://thesociablegeek.com/azure/using-curl-in-powershell/ SDsolar vor 6 Jahren 0
@SDsolar Oder Sie können diese Antwort nur befürworten / verbessern (https://superuser.com/questions/25538/how-to-download-files-from-command-line-in-windows-like-wget-is-doing/ 494009 (494009) unten. Franklin Yu vor 6 Jahren 1
Verstanden. Ich habe dies getan, mit vollständigen Anweisungen, die mit jeder modernen Version von Windows funktionieren werden - es sind keine Ergänzungen oder Modifikationen erforderlich. SDsolar vor 6 Jahren 0

17 Antworten auf die Frage

280
Paolo Tedesco

Eine Alternative, die ich kürzlich mit PowerShell entdeckt habe:

$client = new-object System.Net.WebClient $client.DownloadFile("http://www.xyz.net/file.txt","C:\tmp\file.txt") 

Es funktioniert auch mit GET-Abfragen.

Wenn Sie Anmeldeinformationen zum Herunterladen der Datei angeben müssen, fügen Sie die folgende Zeile dazwischen ein:

$client.Credentials = Get-Credential 

Eine Standard-Windows-Anmeldeinformationen-Eingabeaufforderung wird angezeigt. Die von Ihnen eingegebenen Anmeldeinformationen werden zum Herunterladen der Datei verwendet. Sie müssen dies nur einmal tun, während Sie das $ client-Objekt verwenden.

Sie können dies auch in einer Zeile tun: `(new-object System.Net.WebClient) .DownloadFile ('http://www.xyz.net/file.txt', 'C:\tmp\file.txt' ) ` schellack vor 12 Jahren 82
Das wäre nichts wie Wget, wenn man nur ein anderes großes Programm installieren muss, um es zu benutzen. Rob vor 11 Jahren 0
@Rob Powershell ist in Windows integriert ... nhinkle vor 11 Jahren 15
Ab Vista ja. Arran vor 11 Jahren 8
Re @Arran: "Von Vista auf, ja" - also ... in den letzten sechs Jahren (jetzt 7), ja, das ist in Windows eingebaut. BrainSlugs83 vor 10 Jahren 1
@ BrainSlugs83, absolut, aber viele, * viele *, Leute benutzen immer noch XP. Es ist nur etwas zu bedenken. Arran vor 10 Jahren 3
@ BrainSlugs83, unterschätzen Sie die Anzahl der Personen, die sich noch auf älteren Windows-Systemen befinden. Ich verstehe das Problem nicht, ich wies darauf hin, dass es nur unter Vista aufwärts geht. Die Leute können es ignorieren oder "Hey Danke!" Sagen, aber Sie ...? Wenn Sie ein Problem haben, erstellen Sie einen Chat, und wir können uns unterhalten. Jemand mit rep (wie Sie) sollte erkennen, dass * hier * nicht der Ort für diese Diskussion ist. Arran vor 10 Jahren 4
Ich weise nur darauf hin, dass die Klarstellung etwas dumm ist, da sie in Windows eingebaut wurde, solange sie existiert - und alle derzeit unterstützten Windows-Versionen haben sie eingebaut. Nichts weiter. BrainSlugs83 vor 10 Jahren 2
Was ist, wenn Sie eine Authentifizierung für eine https-Site benötigen UND sich hinter einem Proxy befinden? opticyclic vor 9 Jahren 0
Gibt es eine Option, um den Fortschritt des Downloads anzuzeigen? Devesh Khandelwal vor 8 Jahren 0
Ich bin nicht sicher, ob sich dies in einer Version von Powershell geändert hat, aber Sie können keinen Pfad für den zweiten Parameter von DownloadFile angeben (Sie können nur einen Dateinamen angeben). Wenn das obige nicht für Sie funktioniert, versuchen Sie Folgendes: `(neues-Objekt System.Net.WebClient) .DownloadFile ('http://www.example.net/file.‌ txt', 'file.tx‌ t' ) ` n00b vor 6 Jahren 2
Wget ist in Powershell eingebaut, nutzlos. Pedro Lobito vor 5 Jahren 1
//, Zu meiner Überraschung ist wget in PowerShell integriert. Aber ich bin mir ziemlich sicher, dass es nicht so funktioniert wie in Linux. Nathan Basanese vor 5 Jahren 0
"wget" in PowerShell ist ein Alias ​​für "Invoke-WebRequest". Versuchen Sie "Get-Alias ​​wget" auszuführen ... Paolo Tedesco vor 5 Jahren 0
163
Tony

Wget für Windows sollte funktionieren.

Aus dem Wget Wiki FAQ :

GNU Wget ist ein kostenloses Netzwerkdienstprogramm zum Abrufen von Dateien aus dem World Wide Web mithilfe von HTTP und FTP, den beiden am häufigsten verwendeten Internetprotokollen. Es arbeitet nicht interaktiv und ermöglicht so die Arbeit im Hintergrund nach dem Abmelden.

In diesem Abschnitt der FAQ werden Download-Links vorgeschlagen:

Windows-Binärdateien

Stattdessen wird eine Verbindung mit freundlicher Genehmigung von Jernej Simončič verwendet.

Es gibt auch Winwget http://www.cybershade.us/winwget/, wenn Sie eine GUI bevorzugen Col vor 14 Jahren 8
Die Standalone-Version kann von [diesem Link] (http://users.ugent.be/~bpuype/wget/) heruntergeladen werden. Vito Gentile vor 10 Jahren 12
Neuere, aktuellere (Stand heute) [Windows Builds] (https://eternallybored.org/misc/wget/), zur Verfügung gestellt von Jernej Simončič Gras Double vor 9 Jahren 4
@VitoShadow defekter Link The Red Pea vor 8 Jahren 0
Entschuldigung, [kann Quellenschmiededownloads nicht mehr vertrauen] (http://www.infoworld.com/article/2929732/open-source-software/sourceforge-commits-reputational-suicide.html) cixelsyd vor 8 Jahren 0
@cixelsyd Link zu alternativer Quelle aktualisiert. clearkimura vor 8 Jahren 1
https://web.archive.org/web/20150115044318/http://users.ugent.be/~bpuype/wget rahuldottech vor 8 Jahren 0
`wget https://unsecure-cert-site.com/page.html --no-check-certificate -O outputfile.html`, um https-Probleme zu umgehen. kayleeFrye_onDeck vor 7 Jahren 0
Sie müssen nichts herunterladen. Anweisungen hierzu finden Sie unter https://superuser.com/questions/25538/how-to-download-filesfrom-command-line-in-windows-like-wget-is-doing/494009#494009 Arbeit in nativer PowerShell. SDsolar vor 6 Jahren 0
eternallybored.org/misc/wget/ wird auf meinem System vom Virenschutzprogramm des Unternehmens angezeigt. Carbon Black / Bit 9. Wahrscheinlich falsch positiv. Aber Sourceforge läuft man. Unterstützt nicht sslv3. TamusJRoyce vor 6 Jahren 1
65
Steven Penny

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

Invoke-WebRequest -OutFile index.html http://superuser.com 

Oder golfen

iwr -outf index.html http://superuser.com 

Laden Sie eine Datei über HTTP in Windows herunter

Im Gegensatz zu `System.Net.WebClient` funktioniert dies nicht mit Weiterleitungen auf sourceforge (und möglicherweise anderen Websites). Sie können jedoch `Invoke-WebRequest` funktionieren lassen, indem Sie` -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent] :: FireFox` hinzufügen. Ela782 vor 8 Jahren 0
Gibt es eine Option, um den Fortschritt des Downloads anzuzeigen? Franklin Yu vor 6 Jahren 0
@FranklinYu der Fortschritt wird angezeigt, wenn die Datei groß genug ist Steven Penny vor 6 Jahren 0
42
npocmaka

Windows hat ein eigenes Befehlszeilen-Download-Dienstprogramm - BITSAdmin :

BITSAdmin ist ein Befehlszeilenprogramm, mit dem Sie Download- oder Upload-Jobs erstellen und deren Fortschritt überwachen können.

EDIT : 26.01.15 - Hier ist mein Überblick darüber, wie eine Datei auf Windows ohne externe Tools heruntergeladen werden kann

Und ein komplettes Beispiel für bitsadmin:

bitsadmin /transfer myDownloadJob /download /priority normal http://downloadsrv/10mb.zip c:\10mb.zip 

Edit : 15.05.2018 - Es stellte sich heraus, dass auch eine Datei mit certutil heruntergeladen werden kann :

certutil.exe -urlcache -split -f "https://download.sysinternals.com/files/PSTools.zip" pstools.zip 

Certutil wird unter XP / Win2003 nicht standardmäßig installiert, ist jedoch bei den neueren Windows-Versionen verfügbar. Für XP / 2003 benötigen Sie das Admin Tool Pack für Windows Server 2003

Interessant. Das ist eine unbeholfene Software im Vergleich zu wget. Matt H vor 12 Jahren 7
Beachten Sie, dass es nicht mit Windows XP geliefert wird und möglicherweise auch nicht mit anderen Versionen. Ian Dunn vor 11 Jahren 2
Update: BITSAdmin ist veraltet und es ist nicht garantiert, dass es in zukünftigen Windows-Versionen verfügbar ist. Verwaltungstools für den BITS-Dienst werden jetzt von BITS PowerShell-Cmdlets bereitgestellt. nulldev07 vor 11 Jahren 12
@MattH: weil es nto ist, in erster Linie wget zu sein? - Siehe http://en.wikipedia.org/wiki/Background_Intelligent_Transfer_Service peterchen vor 10 Jahren 1
Datei kann nicht hinzugefügt werden - 0x80070057 Tomáš Zato vor 7 Jahren 4
Vielen Dank für die Bereitstellung einer nativen Lösung. Natürlich ist wget "wie" wget ... p_q vor 5 Jahren 0
Ich denke, Sie können keine relativen Pfade verwenden, fx "foo.zip", Sie müssen absolute Pfade wie "C: \ Users \ jdoe \ foo.zip" verwenden. Andernfalls erhalten Sie "Datei kann nicht hinzugefügt werden - 0x80070057 - Der Parameter ist falsch". Mads Skjern vor 5 Jahren 0
@MadsSkjern - Ja, mit Bitsadmin können Sie keine relativen Pfade verwenden. Eine Problemumgehung ist das Hinzufügen von% cd% zum Zielspeicherort, wenn Sie relativ zum aktuellen Speicherort sein möchten. npocmaka vor 5 Jahren 0
28
user190042

Save the following text as wget.js and simply call

cscript /nologo wget.js http://example.com 

This is the code:

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1"); WinHttpReq.Open("GET", WScript.Arguments(0), /*async=*/false); WinHttpReq.Send(); WScript.Echo(WinHttpReq.ResponseText); /* To save a binary file use this code instead of previous line BinStream = new ActiveXObject("ADODB.Stream"); BinStream.Type = 1; BinStream.Open(); BinStream.Write(WinHttpReq.ResponseBody); BinStream.SaveToFile("out.bin"); */ 
In welcher Sprache befindet sich dieses Skript? Sieht für meine aktuelle Aufgabe nützlich aus. Ich möchte weitere Referenzdokumente finden. Sieht nicht ganz nach Vb aus G-. vor 9 Jahren 0
Nützlich für einzelne Dateien. Verbessert den rekursiven Download und https. opticyclic vor 9 Jahren 1
@G-. Ich bin spät dran, aber das ist JavaScript. prooffreader vor 8 Jahren 4
Ich habe versucht, dies für http://database.clamav.net/daily.cvd zu tun, aber es wurden nur 88 KB von 44 MB heruntergeladen :( kokbira vor 6 Jahren 0
17
MartinC

I made a quick myGet.bat file which calls the PowerShell method described above.

@Echo OFF SetLocal EnableDelayedExpansion Set Var=%1 Set Var=!Var:http://=! Set Var=!Var:/=,! Set Var=!Var:%%20=?! Set Var=!Var: =?! Call :LOOP !var! Echo.Downloading: %1 to %~p0!FN! powershell.exe -Command (new-object System.Net.WebClient).DownloadFile('%1','%~p0!FN!') GoTo :EOF :LOOP If "%1"=="" GoTo :EOF Set FN=%1 Set FN=!FN:?= ! Shift GoTo :LOOP 

I borrowed some code from Parsing URL for filename with space.

warum das downvote? das sieht in Ordnung aus und ist eine direkte Antwort auf die Frage. Ja, es ist unübersichtlich und könnte eine Verbesserung verwenden, wie das Umgehen von Und-Zeichen (&) in der URL, aber es funktioniert so wie es ist. matt wilkie vor 10 Jahren 1
15
Gaurav Kumar

Es ist eine native cURL für Windows verfügbar hier . Es gibt viele Varianten - mit und ohne SSL-Unterstützung.

Sie brauchen nicht das zusätzliche Gepäck von Cygwin und dergleichen, sondern nur eine kleine EXE-Datei.


Es ist auch wichtig zu wissen, dass in alle modernen Versionen von Windows Powershell sowohl Aliase wgetals auch curlAliase integriert sind. Sie sind gleichwertig.

Es sind keine zusätzlichen Dateien oder Downloads erforderlich, um die wgetFunktionalität zu erhalten :

Curl in PowerShell (Der gesellige Geek) verwenden

Auszug:

Sie können einen cURL-Befehl wie einen Befehl eingeben, der eine Datei aus einem GitHub-Repository herunterlädt.

curl http://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json

und es scheint, als würde es funktionieren, aber es wird nur cURL als Alias ​​verwendet. In diesem Fall werden Sie nur die Kopfzeilen anstelle der Datei selbst erhalten.

In PowerShell-Aliases können Sie Verknüpfungen für längere Befehle erstellen, damit Sie sie nicht ständig eingeben müssen.

Wenn Sie den Befehl Get-Alias ​​eingeben, erhalten Sie eine Liste aller in PowerShell verwendeten Aliase. Wie Sie sehen, ruft der curl-Befehl nur den Befehl Invoke-WebRequest auf. Sie sind ähnlich, aber nicht die gleichen, weshalb die obige Anfrage für uns nicht funktioniert.

enter image description here

Damit dies in PowerShell einwandfrei funktioniert, können Sie Variablen und -OutFileArgument wie folgt verwenden :

enter image description here

(Dateiname in Bild " https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json " abgeschnitten )

Diese Syntax lädt den gesamten Inhalt der Zieldatei azuredeploy.jsonin die lokale Datei herunternewfile.json


Der Hauptvorteil besteht darin, dass es in Powershell selbst integriert ist, so dass dieser Code direkt ausgeführt wird, ohne dass Downloads erforderlich sind, oder andere zusätzliche Dateierstellungen erforderlich sind, damit er mit jeder modernen Windows-Version funktioniert.

Dies kann direkt in einer Zeile erfolgen, aber die Zeile wird ziemlich lang und ist auf einen Blick nicht so sofort lesbar. SDsolar vor 6 Jahren 0
8
Jesse P Francis

Ich suchte nach dem gleichen und da ich kein Privileg hatte, eines der oben genannten Pakete zu installieren, ging ich für eine kleine Problemumgehung (um 30 Dateien herunterzuladen):

  • Ich habe eine Batchdatei erstellt
  • Alle Dateien aufgelistet
  • Setzen Sie firefox.exeden Anfang jeder Zeile
  • Ging in das Firefox-Verzeichnis in Program Files
  • Rannte es.
3
Zsolt Botykai

Und http://www.httrack.com/ hat eine schöne GUI (und ist kostenlos), um Seiten zu spiegeln. Es hat auch eine Linux-Version.

3
Rich Homolka

Cygwin hat Wget (und viele weitere Dienstprogramme).