457 votes

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

Comment puis-je télécharger directement quelque chose à partir du web sans qu'Internet Explorer ou Firefox n'ouvre Acrobat Reader/Quicktime/MS Word/quelque chose ?

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

0 votes

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

28 votes

L'intérêt d'avoir une commande est de pouvoir écrire un fichier batch et de l'exécuter (peut-être planifié comme une tâche) quand vous le souhaitez. C'est là que l'interface graphique n'est pas à la hauteur.

7 votes

Comment télécharger avec MS Word ?

26voto

Isisagate Points 794

Il existe un cURL natif pour Windows. aquí . Il existe de nombreuses variantes, avec ou sans support SSL.

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


Il est également important de savoir qu'il existe à la fois wget y curl alias intégrés dans toutes les versions modernes de Windows Powershell. Ils sont équivalents.

Aucun fichier ou téléchargement supplémentaire n'est nécessaire pour obtenir le service. wget fonctionnalité :

Utiliser Curl dans Powershell (The Sociable Geek)

Extrait :

Vous pouvez taper une commande cURL comme celle qui télécharge un fichier à partir d'un dépôt GitHub.

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

et on aura l'impression que ça marche, mais ce qu'il fait en réalité, c'est simplement utiliser cURL comme un alias. Dans l'exemple ci-dessus, ce qui va se passer est que vous obtiendrez juste les en-têtes au lieu du fichier lui-même.

Les alias dans PowerShell vous permettent de créer des raccourcis pour des commandes plus longues afin de ne pas avoir à les taper tout le temps.

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

enter image description here

Pour que cela fonctionne correctement dans PowerShell, le plus simple est d'utiliser des variables et la fonction -OutFile comme indiqué ici :

enter image description here

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

Cette syntaxe permet de télécharger 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 qu'aucun téléchargement ou autre création de fichier supplémentaire ne soit nécessaire pour le faire fonctionner sur toute version moderne de Windows.

0 votes

Cela peut être fait directement sur une ligne, mais la ligne devient assez longue et n'est pas aussi immédiatement lisible d'un coup d'œil.

25voto

MartinC Points 171

J'ai créé un fichier rapide 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 à Analyse de l'URL pour un nom de fichier avec un espace .

1 votes

Pourquoi le downvote ? cela me semble correct et est une réponse directe à la question. Oui, il est maladroit et pourrait être amélioré, comme l'échappement des esperluettes (&) dans l'url, mais il fonctionne tel quel.

0 votes

Ne serait-il pas plus simple d'écrire un script PowerShell ? ??

4 votes

powershell.exe -Command "Invoke-WebRequest -OutFile ./file-name https://location/file-name" <-- Utilisation simple d'une ligne de powershell dans script fichier codant en dur l'emplacement et le nom du fichier.

9voto

Jesse P Francis Points 151

Je cherchais la même chose, et comme je n'avais pas le privilège d'installer l'un des paquets 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
  • Liste de tous les fichiers
  • Mettez firefox.exe au début de chaque ligne
  • Je suis allé dans le répertoire firefox dans Program Files
  • Je l'ai fait.

9voto

Vous pouvez également utiliser le wget emballé dans PowerShell . ;^) Pour l'ouvrir, appuyez sur la touche Windows et tapez "powershell" ou Windows-R et tapez "powershell" et appuyez sur retour.

Aucune installation n'est nécessaire.

Une différence intéressante par rapport à la convention wget (plus à ce lien ) : Vous ne pouvez pas simplement utiliser le plus grand que pour envoyer un message à un fichier. wget dans PowerShell n'est qu'une enveloppe pratique pour Invoke-WebRequest et vous devez utiliser sa syntaxe pour écrire dans un fichier.

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

1 votes

-OutFile a fait le travail !

7voto

BrainSlugs83 Points 132

Si PowerShell est une option, c'est la voie préférée, puisque vous n'aurez (potentiellement) pas à installer quoi que ce soit de supplémentaire :

(new-object System.Net.WebClient).DownloadFile('http://www.example.com/file.txt', 'C:\tmp\file.txt')

À défaut, Wget pour Windows, comme d'autres l'ont souligné, est certainement la deuxième meilleure option. Comme indiqué dans une autre réponse, il semble que vous puissiez télécharger Wget tout seul ou vous pouvez le prendre comme une partie de Cygwin o MSys .

Si, pour une raison quelconque, vous vous retrouvez coincé dans une distorsion temporelle, en utilisant une machine qui n'a pas PowerShell y vous n'avez aucun accès à un navigateur web fonctionnel (c'est-à-dire qu'Internet Explorer est le seul navigateur sur le système et que ses paramètres sont corrompus), et votre fichier se trouve sur un site FTP (par opposition à HTTP) :

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

Si ma mémoire est bonne, cette fonction existe depuis Windows 98, et je peux confirmer qu'elle est toujours présente dans Windows 8 RTM (vous devrez peut-être entrer dans le menu de l'application). appwiz.cpl et ajouter/supprimer des fonctionnalités pour l'obtenir). Cet utilitaire peut à la fois télécharger et envoyer 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é m'a sauvé la vie par le passé, surtout à l'époque de ftp.cdrom.com - j'ai téléchargé Firefox de cette façon une fois, sur une machine complètement cassée qui n'avait qu'une connexion Internet par ligne commutée (à l'époque où la taille maximale des paquets de sneakernet était encore de 1,44 Mo, et où Firefox s'appelait encore "Netscape"). /moi fait trollface ).

Quelques conseils : c'est son propre processeur de commande, et il a sa propre syntaxe. Essayez de taper "help". Tous les sites FTP requièrent un nom d'utilisateur et un mot de passe ; mais s'ils autorisent les utilisateurs "anonymes", le nom d'utilisateur est "anonyme" et le mot de passe est votre adresse électronique (vous pouvez en inventer une si vous ne voulez pas être suivi, mais il existe généralement une sorte de logique pour s'assurer qu'il s'agit d'une adresse électronique valide).

0 votes

+1 pour avoir pensé au ftp en ligne de commande ! Cependant, wget et powershell ont tous deux été mentionnés bien avant que tu ne te joignes à la fête, donc -1 sur ce point :-/.

0 votes

Les autres réponses powershell que j'ai vues étaient toutes multi-liners et/ou avaient une certaine odeur de code. Ceci est une réponse courte et simple pour télécharger un fichier. -- Je voulais également fournir une réponse qui couvre toutes les bases :-)

2 votes

Je ne sais pas pourquoi vous avez deux points d'interrogation dans le fichier de destination. C:\tmp\file.tx??t

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X