web-dev-qa-db-fra.com

Comment télécharger des fichiers en ligne de commande sous Windows comme wget ou curl

Comment puis-je télécharger quelque chose directement sur le Web sans Internet Explorer ou Firefox en ouvrant Acrobat Reader/Quicktime/MS Word/peu importe?

J'utilise Windows, donc une version Windows de Wget ferait l'affaire.

324
Paolo Tedesco

Wget pour Windows devrait fonctionner.

Depuis le Wget Wiki FAQ :

GNU Wget est un utilitaire réseau gratuit permettant de récupérer des fichiers du World Wide Web en utilisant HTTP et FTP, les deux protocoles Internet les plus largement utilisés. Il fonctionne de manière non interactive, permettant ainsi de travailler en arrière-plan après la fermeture de session.

À partir de cette section de FAQ , des liens de téléchargement sont proposés:

Binaires Windows

Le lien avec la courtoisie de Jernej Simončič est utilisé à la place.

171
Tony

Une alternative que j'ai découverte récemment avec PowerShell:

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

Cela fonctionne aussi bien avec les requêtes GET.

Si vous devez spécifier des informations d'identification pour télécharger le fichier, ajoutez la ligne suivante entre les deux:

$client.Credentials =  Get-Credential                

Un message d'identification Windows standard apparaîtra. Les informations d'identification que vous entrez ici seront utilisées pour télécharger le fichier. Vous ne devez faire cela qu'une fois pour toutes les fois où vous utiliserez l'objet $ client.

296
Paolo Tedesco

Si vous avez PowerShell> = 3.0, vous pouvez utiliser Invoke-WebRequest

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

Ou joué au golf

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

Téléchargez un fichier via HTTP sous Windows

76
Steven Penny

Windows a son propre utilitaire de téléchargement en ligne de commande - BITSAdmin :

BITSAdmin est un outil de ligne de commande que vous pouvez utiliser pour créer des tâches de téléchargement ou de téléchargement et surveiller leur progression.

EDIT: 26.01.15 - Voici comment vous pouvez télécharger un fichier sous Windows sans outil externe

Et un exemple complet de bitsadmin:

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

Edit : 15.05.2018 - Il est désormais possible de télécharger un fichier avec certutil aussi :

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

Certutil n'est pas installé par défaut sur XP/Win2003 mais est disponible sur les versions Windows les plus récentes. Pour XP/2003, vous aurez besoin du Admin Tool Pack pour Windows Server 2003

52
npocmaka

Enregistrez le texte suivant sous le nom wget.js et appelez simplement

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

C'est le 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");
*/
30
user190042

Il existe un cURL natif pour Windows disponible ici . Il existe de nombreuses variétés disponibles, avec et sans support SSL.

Vous n'avez pas besoin du bagage supplémentaire de Cygwin et autres, juste d'un petit fichier EXE.


Il est également important de savoir qu'il existe des alias wget et curl dans toutes les versions modernes de Windows Powershell. Ils sont équivalents.

Aucun fichier ni téléchargement supplémentaire n'est requis pour obtenir la fonctionnalité wget:

Utilisation de Curl In Powershell (The Sociable Geek)

Extrait:

Vous pouvez taper une commande cURL comme celle qui télécharge un fichier depuis un référentiel GitHub.

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

et cela semblera fonctionner, mais en réalité, cURL est utilisé comme alias. Dans le cas ci-dessus, vous obtiendrez simplement les en-têtes au lieu du fichier lui-même.

Les alias dans PowerShell vous permettent de créer des raccourcis pour les commandes plus longues, de sorte que vous n’ayez pas à les taper tout le temps.

Si vous tapez la commande Get-Alias, cela vous donnera une liste de tous les alias utilisés dans PowerShell. Comme vous pouvez le constater, la commande curl appelle simplement la commande Invoke-WebRequest. Ils sont similaires mais pas les mêmes, c'est pourquoi la demande ci-dessus ne fonctionne pas pour nous.

 enter image description here

Pour que cela fonctionne correctement dans PowerShell, le moyen le plus simple consiste à utiliser des variables et l'argument -OutFile, comme indiqué ci-après:

 enter image description here

(nom de fichier coupé dans l'image “ https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/mongodb-on-ubuntu/azuredeploy.json ”)

Cette syntaxe téléchargera le contenu complet du fichier cible azuredeploy.json dans le fichier local newfile.json


Le principal avantage est qu'il est intégré à Powershell lui-même, de sorte que ce code s'exécutera directement sans téléchargement ou que toute autre création de fichier supplémentaire est requise pour le faire fonctionner sur toute version moderne de Windows.

20
Gaurav Kumar

J'ai créé un rapide fichier myGet.bat qui appelle la méthode PowerShell décrite ci-dessus.

@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

J'ai emprunté du code àURL d'analyse du nom de fichier avec un espace.

19
MartinC

Je cherchais la même chose, et comme je n'avais aucun privilège pour installer l'un des packages ci-dessus, j'ai opté pour une petite solution de contournement (pour télécharger plus de 30 fichiers):

  • J'ai créé un fichier batch
  • Répertorié tous les fichiers
  • Mettez firefox.exe au début de chaque ligne
  • Je suis allé au répertoire firefox dans Program Files
  • A couru.
8
Jesse P Francis

Cygwin a Wget (et de nombreux autres utilitaires).

3
Rich Homolka

Si PowerShell est une option, c'est la route à privilégier, car vous ne devrez (potentiellement) installer rien de plus:

(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt', 'C:\tmp\file.tx??t')

En cas d'échec, Wget pour Windows, comme d'autres l'ont fait remarquer, est certainement la deuxième meilleure option. Comme indiqué dans une autre réponse, il semble que vous pouvez télécharger Wget tout seul , ou vous pouvez le récupérer dans le cadre de Cygwin ou MSys .

Si, pour une raison quelconque, vous vous retrouvez coincé dans une impasse temporelle, si vous utilisez un ordinateur dépourvu de PowerShell et , vous n’avez aucun accès à un navigateur Web opérationnel (c’est-à-dire que Internet Explorer est le seul le système et ses paramètres sont corrompus) et votre fichier est sur un site FTP (par opposition à HTTP):

start->run "FTP", press "OK".

Si la mémoire est utile, elle existe depuis Windows 98 et je peux confirmer qu’elle existe toujours dans Windows 8 RTM (vous devrez peut-être accéder à appwiz.cpl et ajouter/supprimer des fonctionnalités pour l'obtenir). Cet utilitaire peut à la fois télécharger et télécharger des fichiers vers/depuis des sites FTP sur le Web. Il peut également être utilisé dans des scripts pour automatiser l'une ou l'autre opération.

Cet outil intégré a été pour moi une véritable bouée de sauvetage dans le passé, en particulier à l'époque de ftp.cdrom.com - j'ai déjà téléchargé Firefox de cette façon, sur une machine complètement en panne qui ne possédait qu'un accès Internet par ligne commutée. connexion (à l’époque où la taille de paquet maximale du sneakernet était toujours de 1,44 Mo et que Firefox s’appelait encore "Netscape"/me fait trollface ).

Quelques astuces: c'est son propre processeur de commande et sa propre syntaxe. Essayez de taper "aide". Tous les sites FTP nécessitent un nom d'utilisateur et un mot de passe. mais s'ils autorisent les utilisateurs "anonymes", le nom d'utilisateur est "anonymous" et le mot de passe est votre adresse e-mail (vous pouvez en créer une si vous ne souhaitez pas être suivi, mais il existe généralement une sorte de logique une adresse email valide).

3
BrainSlugs83

Et http://www.httrack.com/ dispose d'une interface graphique conviviale (et gratuite) pour les sites en miroir. Il a également une version Linux.

2
Zsolt Botykai

Vous pouvez également utiliser la wget fournie dans PowerShell . ; ^) Pour ouvrir, appuyez sur la touche Windows et tapez "PowerShell" ou Windows-R et tapez "PowerShell" et appuyez sur Entrée.

Aucune installation nécessaire.

Une différence intéressante par rapport à la variable wget conventionnelle (plus de ce lien ): vous ne pouvez pas simplement utiliser le supérieur-à pour diriger vers un fichier. wget dans PowerShell n’est qu’un wrapper de commodité pour Invoke-WebRequest et vous devez utiliser sa syntaxe pour écrire dans un fichier.

wget https://superuser.com/questions/25538 -OutFile rubySlippers.html
2
ruffin

Vous pouvez obtenir WGet pour Windows ici . Vous pouvez également cliquer avec le bouton droit de la souris sur le lien de téléchargement de l’élément que vous souhaitez télécharger et choisir Enregistrer sous. Cela téléchargera le fichier et ne l'ouvrira pas dans l'application assignée.

1
BinaryMisfit

Je pense que l'installation de wget via Chocolatey est la méthode la plus simple.

  1. Installer Chocolaté
  2. A partir de la ligne de commande, tapez: choco install wget
  3. Vous pouvez ensuite utiliser wget à partir de la ligne de commande, comme sur les systèmes * nix.
0
sivabudh

Si vous voulez une interface graphique, essayez VisualWget , qui est en fait propre et dont la fonctionnalité est complète. Il est basé sur GNU Wget pour son moteur de téléchargement.

EDIT: lien mis à jour.

0
Wurlitzer

Comme indiqué dans cette réponse SU , vous pouvez utiliser les éléments suivants dans Powershell:

Import-Module bitstransfer
start-bitstransfer -source http://something/something.ext -destination c:\something.ext
0
Dolan Antenucci