Comment télécharger des fichiers en ligne de commande sous Windows comme wget ou curl
348
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.
Il suffit de cliquer avec le bouton droit de la souris sur un fichier et de cliquer sur "Enregistrer la cible sous" ou "Enregistrer le lien sous" ou "Enregistrer sous" (la langue varie en fonction de votre navigateur).
BrainSlugs83
25
Le point d’avoir une commande est d’être capable d’écrire un fichier de commandes et de l’exécuter (peut-être planifié en tant que tâche) à tout moment. C'est là que l'interface graphique manque.
Jbm
4
Comment télécharger avec MS Word?
Jaime Hablutzel
5
@ JaimeHablutzel Pourquoi voudriez-vous jamais télécharger quelque chose via MS Word? MS Word n'est pas un terminal.
Braden Best
1
@SDsolar Ou simplement voter / améliorer cette réponse ci-dessous.
GNU Wget est un utilitaire réseau gratuit permettant de récupérer des fichiers du World Wide Web à l’aide de HTTP et FTP, les deux protocoles Internet les plus utilisés. Il fonctionne de manière non interactive, permettant ainsi de travailler en arrière-plan après la fermeture de session.
La version autonome est téléchargeable à partir de ce lien .
Vito Gentile
5
Versions de Windows plus récentes, même les plus récentes (jusqu'à ce jour) , fournies par Jernej Simončič
Gras Double
1
@cixelsyd Lien mis à jour vers une autre source.
clearkimura
1
eternallybored.org/misc/wget/ est signalé par un antivirus d'entreprise sur mon système. Black Carbon / Bit 9. Probablement faux positif. Mais sourceforge on court. Ne supporte pas sslv3.
TamusJRoyce
311
Une alternative que j'ai découverte récemment avec PowerShell:
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
Une invite de connexion 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.
Vous pouvez également le faire en une ligne:(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt')
schellack
16
@Rob Powershell est intégré à Windows ...
nhinkle
9
À partir de Vista, oui.
Arran
3
@ BrainSlugs83, absolument, mais beaucoup, beaucoup de gens utilisent encore XP. C'est simplement quelque chose à garder à l'esprit.
Arran
4
@ BrainSlugs83, vous sous-estimez le nombre de personnes toujours sur des systèmes Windows plus anciens. Je ne comprends pas le problème, j'ai souligné que c'était uniquement à partir de Vista. Les gens peuvent choisir de l'ignorer ou de dire "hé merci!", Mais vous ....? Si vous avez un problème, créez un chat et nous pourrons parler. Quelqu'un avec un représentant (comme vous) devrait comprendre que ce n’est pas le lieu de la discussion.
Arran
83
Si vous avez PowerShell> = 3.0, vous pouvez utiliser
Invoke-WebRequest
Cela ne fonctionne pas avec les redirections sur sourceforge (et éventuellement sur d'autres sites), contrairement à System.Net.WebClient. Cependant, vous pouvez faire un Invoke-WebRequesttravail en ajoutant -UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox.
Ela782
Existe-t-il une option pour voir la progression du téléchargement?
Franklin Yu
@FranklinYu les progrès montreront si le fichier est assez volumineux
Steven Penny
Existe-t-il une option pour ne pas spécifier de fichier de sortie, mais toujours sauvegarder (comme wgetou curl -O, curl --remote-nameou curl -J?)
Tomasz Gandor
60
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.
Intéressant. C'est un logiciel maladroit comparé à wget.
Matt H
2
Notez qu'il n'est pas livré avec Windows XP, et peut-être pas avec d'autres versions non plus.
Ian Dunn
12
Mise à jour: BITSAdmin est obsolète et sa disponibilité dans les futures versions de Windows n'est pas garantie. Les outils d'administration du service BITS sont désormais fournis par les applets de commande BITS PowerShell.
Enregistrez le texte suivant sous wget.jset 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");
*/
Un cURL natif pour Windows est 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, mais d’un seul fichier EXE.
Il est également important de savoir qu'il existe des pseudonymes wgetet des curlalias dans toutes les versions modernes de Windows Powershell. Ils sont équivalents.
Aucun fichier ni téléchargement supplémentaire n'est requis pour obtenir une wgetfonctionnalité:
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 afin que vous n'ayez pas à les taper tout le temps.
Si vous tapez la commande Get-Alias, elle 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.
Pour que cela fonctionne correctement dans PowerShell, le moyen le plus simple consiste à utiliser des variables et l' -OutFileargument, comme indiqué ci-dessous:
Cette syntaxe téléchargera tout le contenu du fichier cible azuredeploy.jsondans 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.
Cela doit être fait directement sur une ligne, mais la ligne devient assez longue et n'est pas aussi lisible immédiatement.
SDsolar
21
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
pourquoi le vote négatif? cela me semble correct et constitue une réponse directe à la question. Oui, c'est maladroit et pourrait être amélioré, comme s'échapper de l'esperluette (&) dans l'URL, mais cela fonctionne tel quel.
Matt Wilkie
Ne serait-il pas plus simple d'écrire un script PowerShell ???
SamB
1
powershell.exe -Command "Invoke-WebRequest -OutFile ./file-name https://location/file-name"<- Utilisation simple d’une ligne téléphonique dans l’emplacement et le nom du fichier de codage.
James Eby
8
Je cherchais la même chose, et comme je n'avais aucun privilège d'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.exeau début de chaque ligne
Je suis allé au répertoire firefox dans Program Files
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 semblerait que vous puissiez télécharger Wget tout seul ou le récupérer dans le cadre de Cygwin ou de MSys .
Si, pour une raison quelconque, vous vous retrouvez coincé dans une impasse temporelle en utilisant un ordinateur dépourvu de PowerShell et que vous n’avez aucun accès à un navigateur Web opérationnel (c’est-à-dire, Internet Explorer est le seul navigateur du 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 entrer appwiz.cplet 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é une véritable bouée de sauvetage pour moi 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 électronique (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).
+1 pour penser à ftp en ligne de commande! Cependant, wget et powershell ont été mentionnés bien avant que vous ne rejoigniez le parti, donc -1 là-bas. : - /
matt wilkie
Les autres réponses de PowerShells que j'ai vues étaient toutes des multilignes et / ou avaient une odeur de code - il s'agit d'une ligne courte et simple pour télécharger un fichier. - Aussi, je voulais fournir une réponse qui couvrait toutes les bases. :-)
BrainSlugs83
1
Je ne suis pas sûr de savoir pourquoi vous avez deux points d'interrogation dans le fichier de destinationC:\tmp\file.tx??t
Ploni
3
Cygwin a Wget (et de nombreux autres utilitaires).
Vous pouvez également utiliser le wgetpackage 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 à conventionnelle wget(plus sur ce lien ): vous ne pouvez pas simplement utiliser le supérieur à pour diriger vers un fichier. wgetdans PowerShell n’est qu’un emballage pratique Invoke-WebRequest, et vous devez utiliser sa syntaxe pour écrire dans un fichier.
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.
En ce moment il y a Bitsadmin.exe, Certutil.exe, Esentutl.exe, Expand.exe, Extrac32.exe, Findstr.exe, Hh.exe, Ieexec.exe, Makecab.exe, Replace.exepour Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 et les versions équivalentes Server.
Si vous voulez une interface graphique, essayez alors VisualWget , qui est en fait propre et complet. Il est basé sur GNU Wget pour son moteur de téléchargement.
voici un lien mis à jour: sites.google.com/site/visualwget/… (les téléchargements se trouvent au bas de la page, utilisez les petites flèches à droite)
Reed Hedges
0
Comme indiqué dans cette réponse , vous pouvez utiliser les éléments suivants dans Powershell:
vous pouvez gérer avec unxutils mais c'est vieux, il utilise une ancienne version de wget. gnuwin32 est la chose à utiliser. pas tout à fait aussi facile à installer et à trouver, mais il y a aussi beaucoup plus qu'unxutils.
Barlop
-3
Si vous avez besoin d’une publication visuelle pour Windows, en voici une.
Vous pouvez poster des données ou des fichiers avec elle.
Réponses:
Wget pour Windows devrait fonctionner.
De la FAQ Wget Wiki :
Dans cette section de la FAQ , des liens de téléchargement sont suggérés:
Le lien avec la courtoisie de Jernej Simončič est utilisé à la place.
la source
Une alternative que j'ai découverte récemment avec PowerShell:
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:
Une invite de connexion 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.
la source
(new-object System.Net.WebClient).DownloadFile('http://www.xyz.net/file.txt','C:\tmp\file.txt')
Si vous avez PowerShell> = 3.0, vous pouvez utiliser Invoke-WebRequest
Ou joué au golf
Télécharger un fichier via HTTP sous Windows
la source
System.Net.WebClient
. Cependant, vous pouvez faire unInvoke-WebRequest
travail en ajoutant-UserAgent [Microsoft.PowerShell.Commands.PSUserAgent]::FireFox
.wget
oucurl -O
,curl --remote-name
oucurl -J
?)Windows a son propre utilitaire de téléchargement en ligne de commande - BITSAdmin :
EDIT : 26.01.15 - Voici mon aperçu de la façon dont un fichier peut être téléchargé sur Windows sans outils externes
Et un exemple complet de bitsadmin:
Edit : 15.05.2018 - Il s'est avéré qu'il est également possible de télécharger un fichier avec certutil :
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 pack d'outils d'administration pour Windows Server 2003.
la source
Enregistrez le texte suivant sous
wget.js
et appelez simplementC'est le code:
la source
Un cURL natif pour Windows est 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, mais d’un seul fichier EXE.
Il est également important de savoir qu'il existe des pseudonymes
wget
et descurl
alias dans toutes les versions modernes de Windows Powershell. Ils sont équivalents.Aucun fichier ni téléchargement supplémentaire n'est requis pour obtenir une
wget
fonctionnalité:Utilisation de Curl In Powershell (The Geek Sociable)
Extrait:
Pour que cela fonctionne correctement dans PowerShell, le moyen le plus simple consiste à utiliser des variables et l'
-OutFile
argument, comme indiqué ci-dessous:Cette syntaxe téléchargera tout le contenu 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.
la source
J'ai créé un rapide fichier myGet.bat qui appelle la méthode PowerShell décrite ci-dessus.
J'ai emprunté du code à l' URL d'analyse pour le nom de fichier avec de l'espace .
la source
powershell.exe -Command "Invoke-WebRequest -OutFile ./file-name https://location/file-name"
<- Utilisation simple d’une ligne téléphonique dans l’emplacement et le nom du fichier de codage.Je cherchais la même chose, et comme je n'avais aucun privilège d'installer l'un des packages ci-dessus, j'ai opté pour une petite solution de contournement (pour télécharger plus de 30 fichiers):
firefox.exe
au début de chaque ligneProgram Files
la source
Si PowerShell est une option, il s'agit de la route préférée, car vous n'avez (potentiellement) pas besoin d'installer quoi que ce soit d'autre:
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 semblerait que vous puissiez télécharger Wget tout seul ou le récupérer dans le cadre de Cygwin ou de MSys .
Si, pour une raison quelconque, vous vous retrouvez coincé dans une impasse temporelle en utilisant un ordinateur dépourvu de PowerShell et que vous n’avez aucun accès à un navigateur Web opérationnel (c’est-à-dire, Internet Explorer est le seul navigateur du système et ses paramètres). sont corrompus), et votre fichier est sur un site FTP (par opposition à HTTP):
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 entrer
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é une véritable bouée de sauvetage pour moi 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 électronique (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).
la source
C:\tmp\file.tx??t
Cygwin a Wget (et de nombreux autres utilitaires).
la source
Et http://www.httrack.com/ a une belle interface graphique (gratuite) pour les sites en miroir. Il a aussi une version Linux.
la source
Vous pouvez également utiliser le
wget
package 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 à conventionnelle
wget
(plus sur ce lien ): vous ne pouvez pas simplement utiliser le supérieur à pour diriger vers un fichier.wget
dans PowerShell n’est qu’un emballage pratiqueInvoke-WebRequest
, et vous devez utiliser sa syntaxe pour écrire dans un fichier.la source
-OutFile
a fait le travail!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.
la source
Je pense que l'installation
wget
via Chocolatey est la méthode la plus simple.choco install wget
wget
la ligne de commande comme sur les systèmes * nix.la source
Rechercher une
/download
fonction sur https://lolbas-project.github.io .En ce moment il y a
Bitsadmin.exe
,Certutil.exe
,Esentutl.exe
,Expand.exe, Extrac32.exe
,Findstr.exe
,Hh.exe
,Ieexec.exe
,Makecab.exe
,Replace.exe
pour Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10 et les versions équivalentes Server.la source
Si vous voulez une interface graphique, essayez alors VisualWget , qui est en fait propre et complet. Il est basé sur GNU Wget pour son moteur de téléchargement.
EDIT: lien mis à jour.
la source
Comme indiqué dans cette réponse , vous pouvez utiliser les éléments suivants dans Powershell:
la source
Unxutils est une alternative à gnuwin32, qui inclut wget.
la source
Si vous avez besoin d’une publication visuelle pour Windows, en voici une.
Vous pouvez poster des données ou des fichiers avec elle.
la source