19 votes

Télécharger un fichier via HTTP à partir d'un script sous Windows

Je veux un moyen de télécharger un fichier via HTTP à partir de son URL (similaire au fonctionnement de wget). J'ai vu les réponses à cette question mais j'ai deux modifications à apporter aux exigences :

  • J'aimerais qu'il fonctionne sous Windows 7 ou supérieur (mais s'il fonctionne sous Windows XP, c'est un bonus).
  • J'ai besoin de pouvoir faire cela sur une machine stockée avec rien d'autre que le script, qui devrait être un texte qui pourrait être facilement saisi sur un clavier ou copié/collé.
  • Plus c'est court, mieux c'est.

Donc, essentiellement, je voudrais un .cmd (batch) script, VBScript ou PowerShell script qui peut accomplir le téléchargement. Il pourrait utiliser COM ou d'invoquer Internet Explorer, mais il doit s'exécuter sans aucune entrée, et doit se comporter correctement lorsqu'il est invoqué sans affichage (comme par le biais d'un fichier Telnet session).

15voto

Red Tux Points 2074

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

Invoke-WebRequest -OutFile su.htm -Uri superuser.com

Ou au golf :

iwr -outf su.htm superuser.com

14voto

akira Points 58339

J'utiliserais Service de transfert intelligent de fond (BITS) ( apprêt ):

Background Intelligent Transfer Service (BITS) est un composant des systèmes d'exploitation modernes de Microsoft. systèmes d'exploitation Microsoft Windows modernes qui facilite le transfert de données par ordre de priorité, prioritaire, étranglé et asynchrone de fichiers entre machines en utilisant la la bande passante inutilisée du réseau.

À partir de Windows 7, Microsoft conseille d'utiliser les cmdlets PowerShell pour le BITS.

% import-module bitstransfer
% Start-BitsTransfer http://path/to/file C:\Path\for\local\file

Vous pouvez également utiliser les BITS via Objets COM voir aquí pour un exemple VBScript . Et il y a bitsadmin un outil en ligne de commande pour contrôler les téléchargements :

BITSAdmin est un outil en ligne de commande que vous pouvez utiliser pour créer des fichiers à télécharger ou des fichiers de type ou de téléchargement et suivre leur progression.

Dans Windows 7 bitsadmin.exe indique lui-même qu'il s'agit d'un outil déprécié. Néanmoins :

% bitsadmin.exe /transfer "NAME" http://path/to/file C:\Path\for\local\file

7voto

Charles Gargent Points 709

Essayez le System.Net.WebClient classe. Il existe un exemple de script PowerShell au bas de la page d'accueil de este page :

$c = new-object system.net.WebClient
$r = new-object system.io.StreamReader $c.OpenRead("http://superuser.com")
echo $r.ReadToEnd()

3voto

ozidroid Points 39

Copiez et collez les six lignes suivantes (ou seulement les quatre dernières lignes) dans un fichier texte. Puis renommez-le en 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

Évidemment, vous devez personnaliser trois choses dans ce script pour qu'il fonctionne pour vous.

  1. La partie qui dit http://www.exampleURL.com/FILE.TXT . Vous devrez substituer l'URL correcte pour le fichier que vous souhaitez télécharger.
  2. La commande que vous lancerez à la ligne de commande pour exécuter ce script ; devra spécifier le nom correct du script, vget.vbs si c'est comme ça que vous l'appelez.
  3. Et le nom FILE.TXT vers lequel vous voulez que la sortie soit dirigée par une DOS ligne de commande batch.

Je n'ai essayé de l'utiliser que pour télécharger un fichier texte ASCII brut (un CMD script plus puissant) à partir de mon ordinateur. Dropbox Je ne sais donc pas si cela fonctionnera pour les fichiers EXE, etc., ou pour d'autres serveurs Web.

Si l'on se passe des deux premières lignes de commentaires, il ne fait que quatre lignes. Si vous vous y connaissez VBScript vous pourriez même être capable de transporter ce code dans votre tête, et de le taper dans la ligne de commande si nécessaire. Il ne contient que cinq éléments clés de la commande : CreateObject , .Open , .Send , WScript.Echo y .responseText .

2voto

Advik Points 21

Comme personne ne l'a signalé, je voudrais ajouter ma réponse.

Si vous avez installé une version de Python, vous pouvez utiliser des bibliothèques externes pour télécharger des fichiers.

python -m pip install wget # install the library
python -m wget http://someserver.org/somefile.rar

Plus loin, vous pourriez mettre cette commande dans wget.bat comme ceci :

python -m wget %1

Ensuite, vous pourriez simplement exécuter wget.bat à partir de la ligne de commande, mais je préfère l'exécuter directement car il affiche une belle barre de progression lorsqu'il est exécuté directement.

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