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:
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 ).
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
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
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()
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.
vget.vbs
, si c'est ainsi que vous l'avez appelé.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
.
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.