web-dev-qa-db-fra.com

Est-il possible de télécharger en utilisant la ligne de commande Windows?

Sans utiliser d'utilitaires non standard (Windows inclus), est-il possible de télécharger à l'aide de la ligne de commande Windows?

La version préférée est Windows XP, mais il est également intéressant de connaître les versions plus récentes.

Pour clarifier davantage ma question:

  • Il doit utiliser HTTP
  • Le fichier doit être enregistré
  • Installation standard de Windows propre, sans outils supplémentaires

En gros, puisque tout le monde crieWget, je veux une fonctionnalité Wget simple, sans utiliser Wget.

122
Robert Massa

Vous pouvez écrire un script VBScript et l'exécuter à partir de la ligne de commande

Créez un fichier downloadfile.vbs et insérez les lignes de code suivantes:

' Set your settings
    strFileURL = "http://www.it1.net/images/it1_logo2.jpg"
    strHDLocation = "c:\logo.jpg"

' Fetch the file
    Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

    objXMLHTTP.open "GET", strFileURL, false
    objXMLHTTP.send()

If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary

objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0    'Set the stream position to the start

Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing

objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End if

Set objXMLHTTP = Nothing

Exécutez-le à partir de la ligne de commande comme suit:

cscript.exe downloadfile.vbs 
51
Igor

À partir de Windows 7, je pense qu’une méthode simple, qui n’a pas encore été mentionnée, est simple:

Syntaxe:

bitsadmin/transfer nom du travail        / télécharger/priorité prioritéURLlocal\chemin\fichier

Exemple:

bitsadmin/transfer mydownloadjob/download/priorité normale ^ 
 http://example.com/nomfichier.Zip C:\Utilisateurs \username\ Téléchargements\nom_fichier.Zip

(Divisé en deux lignes distinctes avec ^ pour plus de lisibilité (pour éviter le défilement).)

Avertissement: Comme indiqué dans les commentaires, le message d'aide bitsadmin commence par indiquer:

BITSAdmin is deprecated and is not guaranteed to be available in future versions of Windows.
Administrative tools for the BITS service are now provided by BITS PowerShell cmdlets.

... mais un autre commentaire a signalé que cela fonctionne sur Windows 8.

74
timeshift

Windows 7 inclut PowerShell et il n’ya pratiquement rien que vous ne puissiez faire avec PowerShell.

Alternative native à wget dans Windows PowerShell?

39
user15130

PowerShell (inclus avec Windows 8 et .NET pour les versions précédentes) offre cette fonctionnalité. La commande powershell permet d'exécuter des commandes PowerShell arbitraires à partir de la ligne de commande ou d'un fichier .bat. Ainsi, la ligne suivante est ce qui est recherché:

powershell -command "& { (New-Object Net.WebClient).DownloadFile('http://example.com/', 'c:\somefile') }"
25
Nik

J'ai trouvé un moyen de le faire, mais vraiment, installez simplement Wget .

Vous pouvez utiliser Internet Explorer à partir d'une ligne de commande (iexplore.exe), puis entrer une URL en tant qu'argument. Alors, lancez:

iexplore.exe http://blah.com/filename.Zip

Quel que soit le fichier, vous devrez spécifier qu'il n'a pas besoin de confirmation à l'avance. Et voilà, il effectuera automatiquement le téléchargement. Donc oui, c'est techniquement possible, mais bon seigneur le fait d'une manière différente.

17
DHayes

Windows Explorer (à ne pas confondre avec Internet Explorer) peut télécharger des fichiers via HTTP. Il suffit d'entrer l'URL dans la barre d'adresse. Ou à partir de la ligne de commande, par exemple, C:\windows\Explorer.exe http://somewhere.com/filename.ext.

Vous obtenez le classique Téléchargement de fichier Invite. À moins que le fichier ne soit un type que l'explorateur Windows sait comment afficher en ligne (.html, .jpg, .gif), vous devrez alors cliquer avec le bouton droit de la souris pour le sauvegarder.

Je viens de tester ceci sur mon VMware image d’une installation vierge de Windows XP 2002 SP1, et cela fonctionne bien.

12
Chris Noe

Vous pouvez utiliser (dans une batte Windows standard):

powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }"

Il semble nécessiter PowerShell v4 ...

(Merci à ce commentaire et celui-ci )

7
Anthony O.

Utilisez FTP.

A partir de la ligne de commande:

ftp ftp.somesite.com
user
password

etc. FTP est inclus dans toutes les versions de Windows dont je me souviens. probablement pas en 3.1, peut-être pas dans Windows 95 , mais certainement tout par la suite.

@RM: Cela va être difficile si vous ne voulez pas télécharger d'autres outils. Il existe une ligne de commande Wget pour Windows et Wget est conçu pour faire exactement ce que vous demandez.

6
Satanicpuppy

Utilisez PowerShell comme ceci:

  1. Créez un fichier download.ps1:

    param($url, $filename)
    $client = new-object System.Net.WebClient 
    $client.DownloadFile( $url, $filename)
    
  2. Vous pouvez maintenant télécharger un fichier comme celui-ci:

    powershell Set-ExecutionPolicy Unrestricted
    powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://somewhere.com/filename.ext" "d:\filename.ext"
    
4
Thomas Jespersen

Le fichier peut être téléchargé via la méthode ci-dessous

bitsadmin/transfer wcb/priority high https://sustainabledevelopment.un.org/content/documents/Agenda21.pdf C:\Fichiers de programme (x86)\Dell Update\Agenda21.pdf

1
Mansur Ali

Si vous installez Telnet, j'imagine que vous pouvez envoyer une requête HTTP à un serveur pour télécharger un fichier.

Vous pouvez également installer Cygwin et utiliser wget pour télécharger un fichier. C'est un moyen très simple de télécharger des fichiers à partir de la ligne de commande.

1
EvilChookie

Vous pouvez installer l'application Linux Wget sous Windows. Il peut être téléchargé à partir de http://gnuwin32.sourceforge.net/packages/wget.htm . Vous pouvez ensuite émettre la commande 'wget (inserturlhere)' ou tout autre URL dans l'invite de commande, ce qui vous permettra de télécharger cette URL/ce fichier/cette image.

1
Jamie

Il existe plusieurs méthodes de téléchargement à l'aide de la ligne de commande de Windows:

  1. Vous pouvez utiliser Cygwin .

    Remarque: les applications incluses ne sont pas des applications Linux natives. Vous devez reconstruire votre application à partir des sources si vous souhaitez exécuter Windows.

  2. En utilisant telnet, il est possible de faire une demande mais vous ne verrez aucun traitement.

  3. Vous pouvez écrire des scripts bat ou VBS.

  4. Écrivez votre propre programme que vous pouvez exécuter à partir de cmd.exe.

1
Jesus

Si vous avez installé python, voici un exemple qui récupère le get-pip.py sur le Web

python -c "import urllib; urllib.urlretrieve ('https://bootstrap.pypa.io/get-pip.py', r'C:\python27\Tools\get-pip.py')"
0
Sipherlab

Par défaut, Windows, vous ne pouvez pas télécharger via HTTP. Windows est un système d’exploitation centré sur l’interface graphique, de sorte qu’il manque beaucoup des outils en ligne de commande que vous trouverez dans les autres systèmes d’exploitation, tels que wget, qui serait le candidat idéal.

System.Net.WebClient.DownloadFile(), une fonction de l'API WiniNet, permet de télécharger des fichiers, mais je ne sais pas dans quelle mesure le développement actuel est avancé par rapport à un fichier de traitement par lots.

0
Andrew Scagnelli