web-dev-qa-db-fra.com

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 étant donné son URL (similaire à la façon dont fonctionne wget). J'ai vu les réponses à cette question , mais j'ai deux changements à apporter aux exigences:

  • Je voudrais qu'il fonctionne sur Windows 7 ou version ultérieure (cependant, si cela fonctionne sur Windows XP, c'est un bonus).
  • Je dois pouvoir le faire sur une machine standard avec uniquement le script, qui devrait être du texte pouvant être facilement saisi sur un clavier ou copié/collé.
  • Le plus court, mieux c'est.

Donc, je voudrais essentiellement un script .cmd (batch), VBScript ou PowerShell script pouvant effectuer le téléchargement. Il peut utiliser COM ou appeler Internet Explorer, mais il doit fonctionner sans aucune entrée et doit se comporter correctement lorsqu'il est appelé sans affichage (comme via une session Telnet ).

19
Jason R. Coombs

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

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

Ou joué au golf:

iwr -outf su.htm superuser.com
16
Steven Penny

Je voudrais utiliser BITS ( amorce ):

Background Intelligent Transfer Service (BITS) is a component of modern
Microsoft Windows operating systems that facilitates prioritized,
throttled, and asynchronous transfer of files between machines using
idle network bandwidth.

À partir de Windows 7, Microsoft recommande d'utiliser les applets de commande PowerShell pour BITS.

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

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

BITSAdmin is a command-line tool that you can use to create download or
upload jobs and monitor their progress.

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

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

Essayez la classe Web Client . Un exemple de script PowerShell se trouve au bas de cette page :

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

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

De toute évidence, vous devez personnaliser trois éléments de ce script pour que celui-ci fonctionne pour vous.

  1. La partie qui dit " http://www.exampleURL.com/FILE.TXT ". Vous devrez remplacer l'URL correcte par le fichier que vous souhaitez télécharger.
  2. La commande que vous exécuterez sur la ligne de commande pour exécuter ce script; vous devrez spécifier le nom correct du script, vget.vbs, si c'est ainsi que vous l'avez appelé.
  3. Et le nom FILE.TXT vers lequel vous voulez que le résultat soit dirigé par une ligne de commande DOS .

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

Si vous vous dispensez des deux premières lignes de commentaire, il ne compte que quatre lignes. Si vous savez vous débrouiller avec VBScript , vous pourrez même transporter ce code dans votre tête et le taper dans la ligne de commande si nécessaire. Il ne contient que cinq composants de commande clé: CreateObject, .Open, .Send, WScript.Echo et .responseText.

3
ozidroid

Voici ma tentative de résumer comment télécharger un fichier sous Windows sans utiliser d'outils externes.

Il inclut BITSADMIN, Microsoft.XmlHTTP et WinHTTP avec un script hybride batch/ JScript qui ne nécessite pas de fichiers temporaires et System.Net.WebClinet avec un hybride auto-compilé jscript.net.

1
npocmaka