Scarica un file via HTTP da uno script in Windows


19

Voglio un modo per scaricare un file via HTTP dato il suo URL (simile a come funziona wget). Ho visto le risposte a questa domanda , ma ho due modifiche ai requisiti:

  • Vorrei che funzionasse su Windows 7 o versioni successive (anche se funziona su Windows XP, questo è un vantaggio).
  • Devo essere in grado di farlo su una macchina stock con nient'altro che lo script, che dovrebbe essere un testo che potrebbe essere facilmente inserito su una tastiera o copiato / incollato.
  • Più corto, meglio è.

Quindi, essenzialmente, vorrei uno script .cmd (batch), VBScript o PowerShell in grado di eseguire il download. Potrebbe utilizzare COM o richiamare Internet Explorer, ma deve funzionare senza input e dovrebbe comportarsi bene quando viene richiamato senza un display (ad esempio tramite una sessione Telnet ).


scarica v1.0 uno strumento da riga di comando win32 come wget superuser.com/a/833445/384998
seizu


Non un duplicato perché questa domanda è specificamente alla ricerca di qualcosa che verrà eseguito su un computer di scorta (senza software aggiuntivo, come wget per Windows).
Jason R. Coombs,

@ JasonR.Coombs La risposta accettata è la stessa di una delle risposte a quella domanda, quindi il futuro lettore non ottiene più nulla.
Franklin Yu,

Sono d'accordo; a questo punto, la domanda più generale sostituisce questa.
Jason R. Coombs il

Risposte:


16

Se hai PowerShell> = 3.0, puoi usare Invoke-WebRequest :

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

O golf:

iwr -outf su.htm superuser.com

2
One-liner dal normale prompt cmd:powershell -command "iwr -outf su.htm superuser.com"
valiano

14

Vorrei usare BITS ( primer ):

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.

A partire da Windows 7, Microsoft consiglia di utilizzare i cmdlet di PowerShell per BITS.

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

Puoi anche usare BITS tramite COM , vedi qui per un esempio VBScript . E c'è ' bitsadmin ', uno strumento da riga di comando per controllare i download:

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

In Windows 7 si bitsadmin.exeafferma che è uno strumento deprecato. Tuttavia:

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

2
Sembra ora che bitsadmin è obsoleto e potrebbe non essere incluso nelle versioni future di Windows.
Jason R. Coombs,

@ JasonR.Coombs: link? riferimento?
Akira,

2
technet.microsoft.com/en-us/magazine/ff382721.aspx ... quindi, invece di "bitadmin.exe" si usano solo bit-cmdlet.
Akira,

1
grazie per quello. Tutto quello che dovevo continuare era che bitsadmin mi diceva che era deprecato quando l'ho eseguito.
Jason R. Coombs il

notare che l'out-path deve essere pienamente qualificato e non relativo (hat tip superuser.com/questions/365755/… )
matt wilkie

7

Prova la classe Client Web . C'è uno script PowerShell di esempio nella parte inferiore di questa pagina:

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

2
Questo è utile Ho scoperto che WebClient ha anche un metodo DownloadFile, che scaricherà il contenuto direttamente in un file. Grazie.
Jason R. Coombs,

3

Copia e incolla le seguenti sei righe (o solo le ultime quattro righe) in un file di testo. Quindi rinominalo in 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

Ovviamente devi personalizzare tre cose in questo script per farlo funzionare per te.

  1. La parte che dice " http://www.exampleURL.com/FILE.TXT ". Dovrai sostituire l'URL corretto per il file che desideri scaricare.
  2. Il comando che eseguirai dalla riga di comando per eseguire questo script; dovrai specificare il nome corretto per lo script vget.vbs, se è così che lo hai chiamato.
  3. E il nome a FILE.TXTcui si desidera che l'output sia diretto da una riga di comando batch DOS .

Ho solo provato a usarlo per scaricare un file di testo ASCII non elaborato (uno script cmd più potente) dal mio account Dropbox , quindi non so se funzionerà per i file EXE, ecc .; o da altri server web.

Se si rinuncia alle prime due righe di commento, sono lunghe solo quattro righe. Se conosci VBScript , potresti persino essere in grado di portare questo codice nella tua testa e digitarlo nella riga di comando secondo necessità. Esso contiene solo cinque componenti di comando chiave: CreateObject, .Open, .Send, WScript.Echoe .responseText.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.