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


Sans utiliser aucun utilitaire non standard (Windows inclus), est-il possible de télécharger en utilisant la ligne de commande Windows?

La version préférée est Windows XP, mais il est également intéressant de savoir pour les nouvelles versions.

Pour clarifier ma question:

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

Donc, fondamentalement, puisque tout le monde crie Wget, Je veux des fonctionnalités simples de Wget, sans utiliser Wget.


117
2017-10-23 14:58


origine


Plus d'idées dans "Si le seul navigateur de Windows est mort, comment se connecter à Internet?" à superuser.com/questions/50427/ - Arjan
Et quelles sont les douze versions de Windows XP? - Arjan
Disons que cela peut être n'importe quelle version de Windows XP SP2 et tout ce qui a été publié plus tard. - Robert Massa
@arjan Question intéressante, mais il n'y a toujours pas de réponse définitive. - Robert Massa
J'aurais dû demander "édition". Comme Starter, Home, Professional, Media Center, Tablet, peut-être même Embedded (bon changement pour les outils là-bas, je suppose!) ... Ou les versions européennes sans Windows Media Player. :-) - Arjan


Réponses:


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

Créer 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 

49
2017-10-23 15:31



Je me demande si cela repose sur Internet Explorer, mais je suppose que ce serait une bonne réponse pour "Si le seul navigateur dans Windows est mort, comment se connecter à Internet?" à superuser.com/questions/50427/ :-) - Arjan
c'est si l'autorisation à cscript.exe est autorisée - hello_there_andy
Je peux confirmer que j'ai testé ce script dans Windows PE 5.1 et cela a fonctionné comme un charme. Je compte l'utiliser pour un déploiement hors ligne, afin de vérifier la version de la plateforme sur le lecteur USB par rapport à un fichier texte stocké sur le serveur. - Wayfarer


À partir de Windows 7, je crois qu’une seule méthode n’a pas été mentionnée, mais elle est simple:

Syntaxe:

bitsadmin / transfer nom du travail       / download / priority priorité    URL   fichier local \ path \

Exemple:

bitsadmin / transfer mydownloadjob / download / priorité normale ^
                  http://example.com/filename.zip C: \ Users \Nom d'utilisateur\ Downloads \ filename.zip

(Cassé en deux lignes séparées avec ^ pour la lisibilité (pour éviter le défilement).)

Attention: Comme indiqué dans les commentaires, la bitsadmin message d'aide commence par dire:

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 indique que cela fonctionne sur Windows 8.


73
2018-05-16 09:13



il fait partie de windows7. - akira
n'a pas fonctionné sur mes fenêtres 7 ... - jyz
Cela aurait dû être la réponse la plus votée. bitsadmin est obsolète en faveur de Windows powershell. - lenkite
Confirmer le travail sur Win7 - kaiser
Remarque: BITSAdmin est obsolète et sa disponibilité n'est pas garantie dans les futures versions de Windows. Les outils d'administration du service BITS sont désormais fournis par les applets de commande BITS PowerShell. - Ujjwal Singh


Windows 7 inclut PowerShell et vous ne pouvez pratiquement rien faire avec PowerShell.

Alternative native à wget dans Windows PowerShell?


37
2017-10-23 15:27



(New-Object Net.WebClient) .DownloadFile ('someurl', 'somepath') - Jason Stangroome
Powershell est pour Power Rangers ! Comment ça se passe et pourquoi est-ce que je ne le savais pas? Bye Bye cmd. - kaiser
à partir de cmd.exe: powershell -command "& { iwr http://www.it1.net/it1_logo2.jpg -OutFile logo.jpg }". fonctionne également à partir de l'invite d'exécution - Janus Troelsen
Oui, il n'y a rien que vous ne puissiez pas faire sans PowerShell. C'est un vrai tarpit :) - jcarpenter2
@JanusTroelsen ma version de PowerShell a répondu "Le terme 'iwr' n'est pas reconnu comme le nom d'une applet de commande, ..." mais après quelques recherches, cela a fonctionné: powershell -command "$clnt = new-object System.Net.WebClient; $clnt.DownloadFile(\"https://host/name\", \"outpufilename\")" - rogerdpack


PowerShell (fourni avec Windows 8 et inclus avec .NET pour les versions antérieures) a cette capacité. le powershell commande permet d’exécuter des commandes arbitraires de PowerShell à partir de la ligne de commande ou .bat fichier. Ainsi, la ligne suivante est ce que l'on veut:

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

24
2018-05-29 02:22



Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire en dessous de son message - vous pouvez toujours commenter vos propres messages, et une fois que vous avez suffisamment réputation vous pourrez commenter un post. - harrymc
@harrymc assurez-vous que c'est une réponse. il télécharge un fichier. Que veux-tu de plus? - Janus Troelsen
(1) Du texte pour expliquer ce que fait ce one-liner, (2) Vérifier que votre réponse n'est pas une formulation alternative à une réponse précédente, car si c'est le cas, elle devrait tout au plus être exprimée sous forme de commentaire sur cette réponse. - harrymc
Quelle version de Windows et de PowerShell est requise pour que cela fonctionne? - Peter Mortensen
cela ne fonctionne pas dans Windows Server 2012 FYI, il lève une MethodInvocationException - knocte


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 devez spécifier qu'il n'a pas besoin de confirmation à l'avance. Et voilà, il va automatiquement effectuer le téléchargement. Donc oui, c'est techniquement possible, mais bon seigneur le fait d'une manière différente.


16
2017-10-23 15:12



Je sais que wget est une bien meilleure façon, ce n'est qu'une question hypothétique;) Votre réponse est assez proche, mais nécessite toujours l'intervention de l'utilisateur (en cliquant sur "Enregistrer" ou en configurant pour ne pas afficher cette boîte de dialogue) - Robert Massa
Comme je l'ai dit, vous devez désélectionner l'option pour demander à enregistrer pour ce type de fichier. Par exemple, téléchargez un fichier zip, désactivez cette invite, puis à l'avenir, tous les fichiers zip accessibles à partir de la ligne de commande seront automatiquement enregistrés. - DHayes
+1, bien que je n'ai pas validé que cela fonctionne (mais la déclaration finale est très vraie) - Arjan
+1 pour "cher seigneur ne le fais pas de cette façon" ... :) - quack quixote


Windows Explorer (à ne pas confondre avec Internet Explorer) peut télécharger des fichiers via HTTP. Entrez simplement 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 rapide. Sauf si le fichier est un type que Windows Explorer sait afficher en ligne, (.html, .jpg, .gif), vous devrez alors cliquer avec le bouton droit pour l'enregistrer.

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


11
2017-08-08 15:18



Cela nécessite une interaction de l'utilisateur. probablement pas ce que la plupart des gens qui veulent télécharger un fichier à partir de l'invite de commande veulent - Kip
De nos jours, cela dépend de votre navigateur par défaut. Le mien est chrome, et il se télécharge automatiquement vers un emplacement connu, donc je considère que cette solution est suffisante pour mes besoins. THX! - kayleeFrye_onDeck


Vous pouvez utiliser (dans une batte Windows standard):

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

Il semble avoir besoin de PowerShell v4 ...

(Grâce à ce commentaire et celui-là)


6
2018-05-10 14:10





Utilisez FTP.

Depuis 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 en Windows 95, mais certainement tout après ça.

@RM: Ce sera 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.


5
2017-10-23 15:01



+1 bonne réponse. ftp est assez universel, tant que le serveur sur lequel vous essayez de télécharger le supporte. - DaveParillo
Merci, désolé je n'étais pas plus précis, je voulais dire en utilisant HTTP. - Robert Massa
Cela ne fonctionnera pas avec la plupart des serveurs FTP car le mode passif n'est pas pris en charge par ce client ftp Windows (avec les NAT, entre les modes passifs est requis). - Peter Mortensen
@PeterMortensen Il ne répond pas non plus à la question depuis qu'il l'a édité pour spécifier qu'il recherchait des fonctionnalités wget. Mais cela ne vous empêche pas de ressusciter une mauvaise réponse de 7 ans, simplement pour ajouter un peu de pédantisme. - 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. Maintenant, vous pouvez 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"
    

3
2018-04-21 21:55



Cela fonctionne, même sur Windows XP 64 bits, PowerShell 2.0. - Peter Mortensen